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

Arrays 这个数组语法在Ruby中意味着什么?,arrays,ruby,syntax,Arrays,Ruby,Syntax,我刚刚遇到了以下代码: @board=Array.new(7){Array.new(7)} 我从来没有在ruby中看到过数组的这种语法,在搜索之后也找不到太多。我真的不明白这里的花括号是怎么回事。我希望有人能给我一个简单的解释。谢谢 new的块语法允许您根据索引编号来初始化单个数组元素。在您的例子中,不使用索引,但所有7个数组元素都使用同样包含7个元素的嵌套数组进行初始化,因此您将得到一个7x7“矩阵” 举例说明: $ irb irb(main):001:0> Array.new(7)

我刚刚遇到了以下代码:

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

我从来没有在ruby中看到过数组的这种语法,在搜索之后也找不到太多。我真的不明白这里的花括号是怎么回事。我希望有人能给我一个简单的解释。谢谢

new的块语法允许您根据
索引
编号来初始化单个数组元素。在您的例子中,不使用索引,但所有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]]

阅读此处的文档:当他们使用带有散列的示例时,我理解文档中的内容。我假设这只是一个二维数组,但我想我不明白为什么。它清楚地表明,
…在最后一种形式中,创建了一个给定大小的数组。该数组中的每个元素都是通过将元素的索引传递给给定的块并存储返回值来创建的-这意味着当你访问
@board
的任何索引时,它将是一个由7个元素组成的数组-是的,这是一种创建2D数组的方法。好的,谢谢你的帮助。你的问题不清楚。你到底不明白语法的哪一部分?您发布的代码中只有5种语法结构:消息发送、变量取消引用、整数文本、块和赋值。你在问这5个问题中的哪一个?好吧,现在我觉得这更有意义了。我想我真的不明白引擎盖下发生了什么。谢谢@哈利布。考虑接受这个答案,除非你在等待更多的答案: