Как создать многомерный массив в 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 (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 автоматически возвращают результат последнего оператора, выполненного в методе или блоке.