Как объявить пустой 2-мерный массив в Ruby?

может кто-нибудь сказать мне, как объявить новый экземпляр 2-мерного массива? Большинство языков использует что-то вроде

array = Array.new[2][2]

Я не знаю, как это сделать в Ruby.

помощь Pls...

4 ответов


вы можете сделать:

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

вы можете объявить многомерный массив в 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)}

теперь у вас есть array с 2 строк и с nil значения.

теперь array переменная содержит [[nil, nil], [nil, nil]] который рассматривается как empty multidimensional array или nil value multidimensional array.


чтобы объявить 2d-массив в 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]]

мы можем сделать любой уровень вложенности, например, для 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


вы также можете инициализировать передачу значения:

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

выход:

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