请问如何声明一个二维数组的新实例?大多数编程语言使用类似以下的方式:
array = Array.new[2][2]
我不知道如何在Ruby中实现它。
请问如何声明一个二维数组的新实例?大多数编程语言使用类似以下的方式:
array = Array.new[2][2]
我不知道如何在Ruby中实现它。
你可以这样做:
width = 2
height = 3
Array.new(height){Array.new(width)} #=> [[nil, nil], [nil, nil], [nil, nil]]
[row, row row]
。因此,您的示例应该交换高度和宽度,使其像这样:Array.new(height){Array.new(width)}
。这样,您就可以使用 arrayInstance[row][column]
而不是 arrayInstance[column][row]
来访问元素。 - Kevin Wheeler在Ruby中声明二维数组,使用以下语法并指定初始化值:
row, col, default_value = 5, 4, 0
arr_2d = Array.new(row){Array.new(col,default_value)}
=> [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
我们可以进行任意级别的嵌套,例如对于3维数组(5 x 4 x 2):您可以将块传递给最内部的数组以初始化数组
z = 2
arr_3d = Array.new(row){Array.new(col){Array.new(z){|index| index}}}
=> [[[0, 1], [0, 1], [0, 1], [0, 1]],
[[0, 1], [0, 1], [0, 1], [0, 1]],
[[0, 1], [0, 1], [0, 1], [0, 1]],
[[0, 1], [0, 1], [0, 1], [0, 1]],
[[0, 1], [0, 1], [0, 1], [0, 1]]]
现在,你可以使用 [] 运算符访问它的元素,例如 arr_2d[0][1],实际上它是一个数组的数组。
Array.new(3) { Array.new(3) { '0' } }
输出:
[
["0", "0", "0"],
["0", "0", "0"],
["0", "0", "0"]
]
Array.new(行数){Array.new(列数)}
如何使用这个语法
我们通过上面的例子来理解它,即array = Array.new[2][2]
。array = Array.new(2){Array.new(2)}
现在,您有一个包含2行2列和nil值的array
。array
变量包含[[nil, nil], [nil, nil]]
,它被视为空多维数组
或nil值多维数组
。