这个数组语法在Ruby中意味着什么?

时间:2016-07-01 14:43:03

标签: arrays ruby syntax

我刚看到这段代码:

@board=Array.new(7){Array.new(7)}

我从来没有在ruby中看到过这个数组的语法,我在搜索后找不到太多内容。我真的不知道这里的花括号是怎么回事。我希望有人可以给我一个简短的解释。谢谢!

1 个答案:

答案 0 :(得分:3)

new的块语法允许您初始化各个数组元素,可选择基于index数字。在你的情况下,不使用索引,但所有7个数组元素都使用7个元素的嵌套数组进行初始化,因此你得到一个7x7"矩阵"。

举例说明:

$ irb
irb(main):001:0> Array.new(7)
=> [nil, nil, nil, nil, nil, nil, nil]

$ irb
irb(main):001:0> require 'pp'
=> true
irb(main):002:0> pp Array.new(7) {Array.new(7)}
[[nil, nil, nil, nil, nil, nil, nil],
 [nil, nil, nil, nil, nil, nil, nil],
 [nil, nil, nil, nil, nil, nil, nil],
 [nil, nil, nil, nil, nil, nil, nil],
 [nil, nil, nil, nil, nil, nil, nil],
 [nil, nil, nil, nil, nil, nil, nil],
 [nil, nil, nil, nil, nil, nil, nil]]