Kako stvoriti višedimenzionalni niz u Rubyju
Kako stvoriti višedimenzionalni niz u Rubyju. Iako Ruby ne pruža eksplicitnu podršku za višedimenzionalne nizove, možete ga sami implementirati ako imate osnovno znanje jezika. U biti morate stvoriti "niz nizova" u kojem svaki element niza sadrži još jedan niz. Da biste stvorili takav višedimenzionalni niz u Rubyju, možete napisati metodu koja se koristi za generiranje nizova nizova tako da se kôd ne mora ponavljati.
Stvorite višedimenzionalni niz u Rubyju
1. korak
Napišite kostur metode. Ova metoda će uzeti niz argumenata dimenzije i vratiti prazan višedimenzionalni niz tih dimenzija. Na primjer, za niz 10x10, nazovite ovu metodu mda(10,10):def mda(width,height)end
2. korak
Napravite niz elemenata širine.
3. korak
Napravite niz elemenata visine za svaki element u nizu. To čini "niz nizova" koji će se koristiti kao dvodimenzionalni niz. Da biste stvorili prazne nizove određene duljine, upotrijebite konstruktor Array.new s duljinom kao argumentom. U početku će sve vrijednosti u nizu biti nula.
4. korak
Koristite kartu! metoda također. Karta! metoda ponavlja svaki element u nizu, pokreće blok za svaki i dodjeljuje rezultat bloka elementu niza. Isti se rezultat može postići korištenjem for petlje, ali map! metoda je sažetija:def mda(width,height)a =Array.new(width)a.map! { Array.new(height) }return aend
Korak 5
Koristite ovaj niz s operatorom indeksa (uglate zagrade []). Na primjer, ako imate polje 10x10 pod nazivom "a" i želite element 7,3, rekli biste a[7][3]:a =mda(10,10)# Ispunite polje vrijednostimaa[7][ 5] ="niz"a[2][9] =23# Dohvaćanje vrijednosti stavlja a[7][5]stavlja[2][9]
Korak 6
Iskoristite mogućnost "lančanih" poziva metoda u Rubyju. Na primjer, metoda Array.new vraća niz. Možete ulančati drugi poziv metode na to da pozovete metodu na vraćenom nizu. Budući da povezujete metode u lancu, a ne koristite naredbu return, ne trebate ni naziv varijable:def mda(width,height)Array.new(width).map!{ Array.new(height) }end
Savjet
Ruby je vrlo izražajan. MDA metoda može biti kratka i sažeta jedna linija koda. Dodatni redovi i ključne riječi samo čine da kod izgleda kompliciranije nego što stvarno jest. Naredba return nije neophodna u Rubyju. Ruby metode i blokovi automatski vraćaju rezultat zadnje naredbe izvršene u metodi ili bloku.