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

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

array = Array.new[2][2]

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

Справка Pls...

Ответ 1

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

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

Ответ 2

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

Ответ 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)}

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

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

Ответ 4

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

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

Выход:

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

Ответ 5

просто: array = Array.new(8, Array.new(8))