Как объявить пустой 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"]
]