如何在ruby中声明一个空的二维数组?

joh*_*han 17 arrays ruby-on-rails-3

有人可以告诉我如何声明一个二维数组的新实例?大多数语言都使用类似的东西

array = Array.new[2][2]

我不知道如何在Ruby中做到这一点.

请帮忙......

Mik*_*wis 37

你可以做:

width = 2
height = 3
Array.new(height){Array.new(width)} #=> [[nil, nil], [nil, nil], [nil, nil]] 
Run Code Online (Sandbox Code Playgroud)

  • 传统上,数组按行主要顺序排列,即`[row, row row]`。所以你的例子应该交换高度和宽度,这样它就像这样:`Array.new(height){Array.new(width)}`。这样你就可以使用 `arrayInstance[row][column]` 而不是 `arrayInstance[column][row]` 访问元素 (2认同)

aqf*_*idi 5

要在ruby中声明2d数组,请使用以下语法和初始化值

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]]
Run Code Online (Sandbox Code Playgroud)

我们可以进行任何级别的嵌套,比如3d数组(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]]]
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用[]运算符访问其元素,如arr_2d [0] [1], actually its array of arrays