Kako ustvariti večdimenzionalno matriko v Rubyju. Čeprav Ruby ne nudi izrecne podpore za večdimenzionalne matrike, ga lahko implementirate sami, če imate osnovno znanje jezika. V bistvu morate ustvariti "matriko matrik", v kateri ima vsak element matrike še eno matriko. Če želite ustvariti tako večdimenzionalno matriko v Rubyju, lahko napišete metodo, ki se uporablja za generiranje nizov matrik, tako da kode ni treba ponavljati.
Ustvarite večdimenzionalni niz v Rubyju
Korak 1
Napišite skelet metode. Ta metoda bo vzela številne argumente dimenzij in vrnila prazen večdimenzionalni niz teh dimenzij. Na primer, za matriko 10x10 pokličite to metodo mda (10,10):def mda (širina, višina) end
Video dneva
2. korak
Ustvarite niz elementov širine.
3. korak
Ustvarite matriko višinskih elementov za vsak element v matriki. Tako nastane "matrika nizov", ki bo uporabljena kot dvodimenzionalna matrika. Če želite ustvariti prazne nize določene dolžine, uporabite konstruktor Array.new z dolžino kot argumentom. Na začetku bodo vse vrednosti v matriki nič.
4. korak
Uporabite zemljevid! tudi metoda. Zemljevid! metoda ponovi vsak element v matriki, zažene blok za vsakega in dodeli rezultat bloka elementu matrike. Enak rezultat je mogoče doseči z uporabo zanke for, vendar zemljevid! metoda je bolj jedrnata: def mda (širina, višina) a = Array.new (širina) a.map! { Array.new (height) }return aend
5. korak
Uporabite to matriko z operatorjem podpisa (oglati oklepaji []). Na primer, če bi imeli matriko 10x10 imenovano "a" in bi želeli element 7,3, bi rekli a[7][3]: a = mda (10,10)# Izpolni matriko z vrednostmia[7][5] = "a niz"a[2][9] = 23# Pridobi vrednostiputs a[7][5]stavi a[2][9]
6. korak
Izkoristite možnost "veriženja" klicev metod v Rubyju. Metoda Array.new na primer vrne matriko. Na to lahko verižete klic druge metode, da pokličete metodo v vrnjenem nizu. Ker verižete metode in ne uporabljate povratnega stavka, tudi ne potrebujete imena spremenljivke: def mda (širina, višina) Array.new (width).map!{ Array.new (height) }end
Nasvet
Ruby je zelo ekspresiven. Metoda MDA je lahko kratka in jedrnata ena vrstica kode. Dodatne vrstice in ključne besede samo naredijo kodo videti bolj zapleteno, kot je v resnici. Izjava vrnitve v Rubyju ni potrebna. Metode in bloki Ruby samodejno vrnejo rezultat zadnjega stavka, izvedenega v metodi ali bloku.