Ruby 将数组作为值推送到另一个数组中
如何将一个数组作为值而不是引用附加到另一个数组中?下面是一个示例:Ruby 将数组作为值推送到另一个数组中,ruby,arrays,immutability,Ruby,Arrays,Immutability,如何将一个数组作为值而不是引用附加到另一个数组中?下面是一个示例: a = [] m = [] i = 1 # first loop a[0] = i a[1] = i + 1 m << a #=> [[1,2]] i += 1 # second loop a[0] = i a[1] = i + 1 m << a #=> [[2,3],[2,3]] a=[] m=[] i=1 #第一圈 a[0]=i a[1]=i+1 m[[1,2]] i+
a = []
m = []
i = 1
# first loop
a[0] = i
a[1] = i + 1
m << a #=> [[1,2]]
i += 1
# second loop
a[0] = i
a[1] = i + 1
m << a #=> [[2,3],[2,3]]
a=[]
m=[]
i=1
#第一圈
a[0]=i
a[1]=i+1
m[[1,2]]
i+=1
#第二圈
a[0]=i
a[1]=i+1
m[[2,3],[2,3]]
我期望类似于
[[1,2],[2,3]]
的内容。替换第一个m替换第一个m将a
分配给另一个数组
m = []
i = 1
a = []
a[0] = i
a[1] = i + 1
m << a
i += 1
a = []
a[0] = i
a[1] = i + 1
m << a
m=[]
i=1
a=[]
a[0]=i
a[1]=i+1
m将a
分配给另一个数组
m = []
i = 1
a = []
a[0] = i
a[1] = i + 1
m << a
i += 1
a = []
a[0] = i
a[1] = i + 1
m << a
m=[]
i=1
a=[]
a[0]=i
a[1]=i+1
m通过检查各种对象的id,您可以更好地了解这里发生了什么
a = []
a.object_id #=> 2164985760
m = []
i = 1
第一圈
第一圈
a[0]=i#=>1
a[1]=i+1#=>2
a、 对象id#=>2164690760
m[[1,2]]
m、 对象id#=>2164655180
m[0]。对象_id#=>2164690760
第二圈
a=[]
a、 对象id#=>2161060600
i+=1#=>2
a[0]=i#=>2
a[1]=i+1#=>3
a、 对象id#=>2161060600
m[[1,2],[2,3]]
m、 对象id#=>2164655180
m[0]。对象_id#=>2164690760
m[1].对象id#=>2161060600
通过检查各种对象的id,您可以更好地了解这里发生了什么
a = []
a.object_id #=> 2164985760
m = []
i = 1
第一圈
第一圈
a[0]=i#=>1
a[1]=i+1#=>2
a、 对象id#=>2164690760
m[[1,2]]
m、 对象id#=>2164655180
m[0]。对象_id#=>2164690760
第二圈
a=[]
a、 对象id#=>2161060600
i+=1#=>2
a[0]=i#=>2
a[1]=i+1#=>3
a、 对象id#=>2161060600
m[[1,2],[2,3]]
m、 对象id#=>2164655180
m[0]。对象_id#=>2164690760
m[1].对象id#=>2161060600
如果您希望在循环后得到类似于[[1,2],[2,3]]
的结果,那么您可能应该使用.map
的Ruby功能来循环并返回数组
这样,您就不必担心管理中间变量(甚至示例中的计数器):
如果您希望在循环后得到类似于[[1,2],[2,3]]
的结果,那么您可能需要使用.map
的Ruby功能来循环并返回数组
这样,您就不必担心管理中间变量(甚至示例中的计数器):
i += 1
a[0] = i #=> 2
a[1] = i + 1 #=> 3
a.object_id #=> 2164985760
m << a #=> [[2, 3], [2, 3]]
m.object_id #=> 2165031720
m[0].object_id #=> 2164985760
m[1].object_id #=> 2164985760
a = []
a.object_id #=> 2164690760
m = []
i = 1
a[0] = i #=> 1
a[1] = i + 1 #=> 2
a.object_id #=> 2164690760
m << a #=> [[1, 2]]
m.object_id #=> 2164655180
m[0].object_id #=> 2164690760
a = []
a.object_id #=> 2161060600
i += 1 #=> 2
a[0] = i #=> 2
a[1] = i + 1 #=> 3
a.object_id #=> 2161060600
m << a #=> [[1, 2], [2, 3]]
m.object_id #=> 2164655180
m[0].object_id #=> 2164690760
m[1].object_id #=> 2161060600
loop_count = 2 # or whatever currently determines how many loops you make
m = (1..loop_count).map do |i|
[i, i+1]
end
m #=> [[1,2],[2,3]]