Как создать многомерный массив в 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 (height)} return aend
Шаг 5
Используйте этот массив с оператором индекса (квадратные скобки []). Например, если у вас есть массив 10x10 с именем «a» и вам нужен элемент 7,3, вы бы сказали a [7] [3]: a = mda (10,10) # Заполняем массив значениями a [7] [5] = "строка" a [2] [9] = 23 # Получение значений возвращает [7] [5] помещает [2] [9]
ШАГ 6
Воспользуйтесь возможностью «связывать» вызовы методов в Ruby. Например, метод Array.new возвращает массив. Вы можете связать вызов другого метода с этим, чтобы вызвать метод в возвращаемом массиве. Поскольку вы связываете методы в цепочку, а не используете оператор return, вам также не нужно имя переменной: def mda (width, height) Array.new (width) .map! {Array.new (height)} end
Подсказка
Руби очень выразительна. Метод MDA может быть короткой и сжатой одной строкой кода. Лишние строки и ключевые слова только усложняют код, чем он есть на самом деле. Оператор return не требуется в Ruby. Методы и блоки Ruby автоматически возвращают результат последнего оператора, выполненного в методе или блоке.