Kuidas luua rubiinis mitmemõõtmelist massiivi. Kuigi Ruby ei paku selgesõnalist tuge mitmemõõtmeliste massiivide jaoks, saate selle ise juurutada, kui teil on põhiteadmised keelest. Peate sisuliselt looma "massiivide massiivi", milles iga massiivi element sisaldab veel ühte massiivi. Sellise mitmemõõtmelise massiivi loomiseks Ruby'is saate kirjutada meetodi, mida kasutatakse massiivide massiivide genereerimiseks, nii et koodi ei peaks kordama.
Looge rubiiniga mitmemõõtmeline massiiv
Samm 1
Kirjutage meetodi skelett. See meetod kasutab mitmeid dimensiooniargumente ja tagastab nende dimensioonide tühja mitmemõõtmelise massiivi. Näiteks 10x10 massiivi puhul kutsuge seda meetodit mda (10,10):def mda (laius, kõrgus) end
Päeva video
2. samm
Looge laiusega elementide massiiv.
3. samm
Looge massiivi iga elemendi jaoks kõrguselementide massiiv. See muudab "massiivide massiivi", mida kasutatakse kahemõõtmelise massiivina. Kindla pikkusega tühjade massiivide loomiseks kasutage konstruktorit Array.new koos pikkusega argumendina. Algselt on kõik massiivi väärtused nullid.
4. samm
Kasutage kaarti! meetod samuti. Kaart! meetod itereerib kõiki massiivi elemente, käivitab igaühe jaoks ploki ja määrab ploki tulemuse massiivi elemendile. Sama tulemuse saab ka for-silmuse abil, kuid kaart! meetod on kokkuvõtlikum: def mda (laius, kõrgus) a = Massiiv.uus (laius) a.kaart! { Massiivi.uus (kõrgus) }tagasi aend
5. samm
Kasutage seda massiivi koos alamindeksi (nurksulud []) operaatoriga. Näiteks kui teil oleks 10x10 massiiv nimega "a" ja soovite 7,3 elementi, ütleksite a[7][3]: a = mda (10,10)# Täitke massiiv väärtustega[7][5] = "string"a[2][9] = 23# Väärtuste toomine paneb a[7][5]lieb a[2][9]
6. samm
Kasutage Ruby meetodikõnede "aheldamise" võimalust. Näiteks meetod Array.new tagastab massiivi. Tagastatud massiivi meetodi kutsumiseks saate selle külge aheldada teise meetodi kutse. Kuna aheldate meetodeid ja ei kasuta tagastuslauset, pole teil vaja ka muutuja nime: def mda (laius, kõrgus) Array.new (width).map!{ Array.new (height) }end
Näpunäide
Ruby on väga väljendusrikas. MDA-meetod võib olla lühike ja sisutihe üks koodirida. Lisaread ja märksõnad muudavad koodi keerulisemaks, kui see tegelikult on. Tagastusavaldus pole Ruby puhul vajalik. Ruby meetodid ja plokid tagastavad automaatselt meetodi või ploki viimase lause tulemuse.