
arr3 = Array.new(2,Array.new(2,0))arr4 = [[0,0],[0,0]]arr3 == arr4 # => truearr3 === arr4 # => truearr3[0][0] = "/"arr4[0][0] = "/"arr3 # => [["/",["/",0]]arr4 # => [["/",0]]解决方法 因为arr3包含两个相同的对象,但是arr4包含两个不同的对象.
>> arr3 = Array.new(2,0))=> [[0,0]]>> arr3.map { |ary| ary.object_ID }=> [73703490,73703490]>> arr4 = [[0,0]]=> [[0,0]]>> arr4.map { |ary| ary.object_ID }=> [73670930,73670920]>> 阅读new(size=0,default=nil)
…In the first form,if no arguments are sent,the new array will be empty. When a size and an optional default are sent,an array is created with size copIEs of default. Take notice that all elements will reference the same object default.
您使用上面的表单创建了arr3,同时使用文字构造函数[]创建了arr4.
A new array can be created by 07001. Arrays can contain different types of objects.
如果您希望Array :: new表现为文字构造,那么请使用new(size){| index |阻止}形式.
>> arr3 = Array.new(2){ Array.new(2,0) }=> [[0,0]]>> arr3.map { |ary| ary.object_ID }=> [73551460,73551450]>> 总结 以上是内存溢出为你收集整理的ruby – 为什么在二维数组中赋值时会有不同的结果?全部内容,希望文章能够帮你解决ruby – 为什么在二维数组中赋值时会有不同的结果?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)