我做到了:
a, b = Array.new(2, [0, 0])
a[0] = 1
我有:
a # => [1, 0]
我遇到b
的问题,这与a
相同:
b # => [1, 0]
问题是参考地址。
帮我在一行中初始化数组。
答案 0 :(得分:1)
提到here:
当发送第二个参数(到
Array.new
)时,相同的对象将用作所有数组元素的值:
因此,正如@mudasobwa在注释中已经建议的那样,您需要使用对每个元素使用块结果的块版本:
a, b = Array.new(2) { [0, 0] }
=> [[0, 0], [0, 0]]
a[0] = 1
a
=> [1, 0]
b
=> [0, 0]