Kako ustvariti večdimenzionalno matriko v Rubyju

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.