Как да създадете многоизмерен масив в Ruby

Как да създадете многоизмерен масив в Ruby. Въпреки че Ruby не предоставя изрична поддръжка за многоизмерни масиви, можете сами да приложите такъв, ако имате основни познания по езика. По същество трябва да създадете "масив от масиви", в който всеки елемент от масива съдържа още един масив. За да създадете такъв многоизмерен масив в Ruby, можете да напишете метод, използван за генериране на масиви от масиви, така че кодът да не трябва да се повтаря.

Създайте многоизмерен масив в Ruby

Етап 1

Напишете скелета на метода. Този метод ще приеме редица аргументи за измерения и ще върне празен многоизмерен масив от тези измерения. Например, за масив 10x10, извикайте този метод mda (10,10):def mda (ширина, височина) end

Видео на деня

Стъпка 2

Създайте масив от елементи с ширина.

Стъпка 3

Създайте масив от елементи на височина за всеки елемент в масива. Това прави "масива от масиви", който ще се използва като двуизмерен масив. За да създадете празни масиви с определена дължина, използвайте конструктора Array.new с дължината като аргумент. Първоначално всички стойности в масива ще бъдат нулеви.

Стъпка 4

Използвайте картата! метод също. Картата! метод итерира всеки елемент в масив, изпълнява блок за всеки и присвоява резултата от блока на елемента на масива. Същият резултат може да се постигне с помощта на цикъл for, но картата! методът е по-сбит: def mda (ширина, височина) a = Array.new (ширина) a.map! { Array.new (height) }връщане aend

Стъпка 5

Използвайте този масив с оператора на индекса (квадратни скоби []). Например, ако имате масив 10x10, наречен "a" и искате елемента 7,3, ще кажете a[7][3]: a = mda (10,10)# Попълване на масива със стойностиa[7][5] = "a string"a[2][9] = 23# Извличане на стойностиputs a[7][5]puts a[2][9]

Стъпка 6

Възползвайте се от възможността за "верижни" извиквания на методи в Ruby. Например методът Array.new връща масив. Можете да свържете друго извикване на метод към това, за да извикате метод от върнатия масив. Тъй като свързвате методите и не използвате израз за връщане, нямате нужда и от името на променливата: def mda (ширина, височина) Array.new (width).map!{ Array.new (височина) }end

Бакшиш

Рубинът е много изразителен. Методът MDA може да бъде кратък и сбит единичен ред код. Допълнителните редове и ключови думи само правят кода по-сложен, отколкото е в действителност. Изявлението за връщане не е необходимо в Ruby. Ruby методите и блоковете автоматично връщат резултата от последния израз, изпълнен в метода или блока.