在一行中创建多个数组

时间:2018-08-29 03:55:06

标签: arrays ruby

我做到了:

a, b = Array.new(2, [0, 0])
a[0] = 1

我有:

a # => [1, 0]

我遇到b的问题,这与a相同:

b # => [1, 0]

问题是参考地址。

帮我在一行中初始化数组。

1 个答案:

答案 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]