Как создать многомерный массив в Ruby
Как создать многомерный массив в Ruby. Хотя Ruby не предоставляет явной поддержки многомерных массивов, вы можете реализовать ее самостоятельно, если у вас есть базовые знания языка. По сути, вы должны создать «массив массивов», в котором каждый элемент массива содержит еще один массив. Чтобы создать такой многомерный массив в Ruby, вы можете написать метод, используемый для генерации массивов массивов, чтобы код не повторялся.
Создание многомерного массива в Ruby
Шаг 1
Напишите скелет метода. Этот метод примет несколько аргументов измерений и вернет пустой многомерный массив этих измерений. Например, для массива 10x10 вызовите этот метод mda(10,10):def mda(width,height)end
Шаг 2
Создайте массив элементов ширины.
Шаг 3
Создайте массив элементов высоты для каждого элемента в массиве. Это делает «массив массивов», который будет использоваться как двумерный массив. Чтобы создать пустые массивы определенной длины, используйте конструктор Array.new с длиной в качестве аргумента. Изначально все значения в массиве будут нулевыми.
Шаг 4
Используйте карту! также метод. Карта! Метод перебирает каждый элемент в массиве, запускает блок для каждого и присваивает результат блока элементу массива. Тот же результат может быть достигнут с помощью цикла for, но карта! метод более лаконичен:def mda(width,height)a =Array.new(width)a.map! { Array.new(высота) }возврат и конец
Шаг 5
Используйте этот массив с оператором нижнего индекса (квадратные скобки []). Например, если у вас есть массив 10x10 с именем "a" и вам нужен элемент 7,3, вы должны сказать a[7][3]:a =mda(10,10)# Заполнить массив значениямиa[7][ 5] ="строка"a[2][9] =23# Получить значенияputs a[7][5]puts a[2][9]
Шаг 6
Воспользуйтесь возможностью «цепочки» вызовов методов в Ruby. Например, метод Array.new возвращает массив. Вы можете связать другой вызов метода с этим, чтобы вызвать метод для возвращаемого массива. Поскольку вы связываете методы и не используете оператор return, вам также не нужно имя переменной:def mda(width,height)Array.new(width).map!{ Array.new(height) }end
Совет
Рубин очень выразителен. Метод MDA может быть короткой и лаконичной строкой кода. Дополнительные строки и ключевые слова только делают код более сложным, чем он есть на самом деле. Оператор return не нужен в Ruby. Методы и блоки Ruby автоматически возвращают результат последнего оператора, выполненного в методе или блоке.