我有以下数组:
@master = Array.new(4, Array.new(2, Array.new()))
=> [[[], []], [[], []], [[], []], [[], []]]
我尝试使用以下内容分配最高的值:
@master[0][0] = "x"
=> "x"
但这是在进行多项任务
@master
=> [["x", []], ["x", []], ["x", []], ["x", []]]
如何仅指定第一个值?我希望得到以下数组:
@master
=> [["x", []], [[], []], [[], []], [[], []]]
答案 0 :(得分:6)
通过这种方式,您可以为每个子数组使用相同的引用。试试这种方式
@master = Array.new(4) { Array.new(2) { Array.new } }
答案 1 :(得分:3)
您正在创建一个数组,并将其分配给第一个数组的每个元素;尝试运行此代码:
.validate()
输出(你的ID会有所不同):
@master.each { |e| puts e.object_id }
正如您所看到的,是完全相同的对象,因此请尝试使用70192803217260
70192803217260
70192803217260
70192803217260
,这将为第一个数组中的每个项目创建一个新数组。