【发布时间】:2012-02-27 00:36:40
【问题描述】:
我想要一个 Ruby 中的二维数组,我可以像这样访问它:
if @array[x][y] == "1" then @array[x][y] = "0"
问题是:我不知道数组维度的初始大小并且我增加了数组(使用<< 运算符)。
如何将它声明为实例变量,这样就不会出现这样的错误?
undefined method `[]' for nil:NilClass (NoMethodError)
问题更新:
@array = Array.new {Array.new}
现在对我有用,所以下面 Matt 的评论是正确的!
我刚刚发现收到错误的原因是因为我像这样迭代数组:
for i in 0..@array.length
for j in 0..@array[0].length
@array[i][j] ...
这显然是错误的并产生了错误。它必须是这样的:
for i in 0..@array.length-1
for j in 0..@array[0].length-1
@array[i][j] ...
【问题讨论】:
-
Ruby 使用动态类型——所以你不需要预先“声明”一个变量是一个二维数组。您可以做的是创建一个变量并将其初始化为一个数组。然后开始将数组放入其中。
-
for array = Array.new {Array.new} 需要改成array = Array.new(3) {Array.new(2)},里面需要有数字
标签: ruby arrays multidimensional-array matrix conways-game-of-life