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

时间:2011-03-21 00:37:28

标签: arrays ruby-on-rails-3

有人可以告诉我如何声明二维数组的新实例吗? 大多数语言都使用

之类的东西
array = Array.new[2][2]

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

请帮忙......

5 个答案:

答案 0 :(得分:29)

你可以这样做:

width = 2
height = 3
Array.new(height){Array.new(width)} #=> [[nil, nil], [nil, nil], [nil, nil]] 

答案 1 :(得分: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]]

我们可以进行任何级别的嵌套,例如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]]]

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

答案 2 :(得分:3)

您可以使用以下命令在Ruby中声明多维数组:

Array.new(Number_of_ROWs){Array.new(Number_of_COLUMNs)}

如何使用此语法

让我们通过使用上面的示例来理解它,即 array = Array.new[2][2]

因此,在这个例子中,我们要声明一个包含2行和2列的空多维数组。

让我们现在开始实现我们的语法,

array = Array.new(2){Array.new(2)}

现在您的array2行,2nil。{/ p>

现在array变量包含[[nil, nil], [nil, nil]] ,其被视为empty multidimensional arraynil value multidimensional array

答案 3 :(得分:0)

您还可以初始化传递值:

Array.new(3) { Array.new(3) { '0' } }

输出:

[
 ["0", "0", "0"], 
 ["0", "0", "0"], 
 ["0", "0", "0"]
]

答案 4 :(得分:0)

简单地:  array = Array.new(8,Array.new(8))