Kako ustvariti večdimenzionalno matriko v Rubyju
Kako ustvariti večdimenzionalno matriko v Rubyju. Čeprav Ruby ne zagotavlja eksplicitne podpore za večdimenzionalne nize, ga lahko implementirate sami, če imate osnovno znanje jezika. V bistvu morate ustvariti "niz nizov", v katerem vsak element niza vsebuje še en niz. Če želite ustvariti takšno večdimenzionalno matriko v Rubyju, lahko napišete metodo, ki se uporablja za generiranje matrik matrik, tako da kode ni treba ponavljati.
Ustvarite večdimenzionalno matriko v Rubyju
1. korak
Napišite okostje metode. Ta metoda bo prevzela številne argumente dimenzije in vrnila prazno večdimenzionalno matriko teh dimenzij. Na primer, za polje 10x10 pokličite to metodo mda(10,10):def mda(širina,višina)end
2. korak
Ustvarite niz elementov širine.
3. korak
Ustvarite niz višinskih elementov za vsak element v nizu. Tako nastane "niz nizov", ki bo uporabljen kot dvodimenzionalni niz. Č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 enake nič.
4. korak
Uporabi 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(width,height)a =Array.new(width)a.map! { Array.new(height) }return aend
5. korak
Uporabite to matriko z operatorjem indeksa (oglati oklepaji []). Na primer, če bi imeli matriko 10x10 z imenom "a" in bi želeli element 7,3, bi rekli a[7][3]:a =mda(10,10)# Izpolnite matriko z vrednostmia[7][ 5] ="niz"a[2][9] =23# Pridobi vrednostistavi a[7][5]stavi[2][9]
6. korak
Izkoristite možnost "veriženja" klicev metod v Rubyju. Na primer, metoda Array.new vrne matriko. Na to lahko povežete drug klic metode, da pokličete metodo v vrnjeni matriki. Ker verižite metode in ne uporabljate stavka return, tudi imena spremenljivke ne potrebujete:def mda(width,height)Array.new(width).map!{ Array.new(height) }end
Nasvet
Ruby je zelo izrazit. Metoda MDA je lahko kratka in jedrnata ena vrstica kode. Zaradi dodatnih vrstic in ključnih besed je koda videti bolj zapletena, kot je v resnici. Stavek vrnitve v Rubyju ni potreben. Metode in bloki Ruby samodejno vrnejo rezultat zadnjega stavka, izvedenega v metodi ali bloku.