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

标签 arrays ruby syntax

我刚看到这段代码:

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

我从来没有在 ruby​​ 中见过数组的这种语法,搜索后我找不到太多关于它的内容。我真的不明白这里的花括号是怎么回事。我希望有人能给我一个简短的解释。谢谢!

最佳答案

new 的 block 语法允许您初始化单独的数组元素,可选地基于 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]]

关于arrays - 这个数组语法在 Ruby 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148228/

相关文章:

variables - Go中这个括号括起来的变量声明语法是什么?

java - 在 Java 中拆分字符串?

php - 返回的数组产生意外的结果

arrays - 快速引用对象

ruby-on-rails - rspec 和 shoulda - 互补还是替代?

ruby-on-rails - 在 Rails 应用程序中创建管理区域

java - 为什么 (boolean ^ int > 0) 有效?

ruby => 运算符

Javascript:从对象数组中提取对象,并将它们放入新数组中

ruby - 处理 nil 值的优雅 "Ruby Way"是什么?