Selv om Ruby ikke gir eksplisitt støtte til flerdimensjonale arrays , kan du implementere en selv hvis du har en grunnleggende kunnskap om språket . Du må i hovedsak skape en "array av arrays " der hvert element i matrisen holder enda en array. Å skape en slik flerdimensjonal array i Ruby , kan du skrive en metode som brukes for å generere matriser av arrays slik at koden ikke må gjentas . Instruksjoner , Lag en flerdimensjonal array i Ruby
en
Skriv skjelettet av metoden. Denne metoden vil ta en rekke dimensjon argumenter og returnere en tom flerdimensjonal array av disse dimensjonene . For eksempel , for en 10x10 matrise, kaller denne metoden MDA ( 10,10 ) : . Def MDA (bredde , høyde ) end
2
Lag en rekke bredde elementer
3
Lag en rekke høyde elementer for hvert element i matrisen . Dette gjør det "array av matriser " som vil bli brukt som en todimensjonal array. Å skape tomme matriser av en bestemt lengde , bruker Array.new konstruktør med lengden som et argument . I første omgang vil alle verdiene i matrisen være null .
4
Bruk kartet ! metoden også. Kartet! Metoden gjentas hvert element i en matrise, går en blokk for alle og tilordner resultatet av blokken til array element . Det samme resultat kan oppnås ved hjelp av en for løkke , men kartet ! metoden er mer konsis : def MDA (bredde , høyde) a = Array.new (bredde ) a.map ! { Array.new (høyde ) } returnerer aend
5
Bruk denne tabellen med senket ( hakeparenteser [ ] ) operatør. For eksempel, hvis du hadde en 10x10 matrise kalles "a" og ønsket 7,3 element , vil du si en [ 7 ] [ 3 ]: a = MDA ( 10,10 ) # Fyll array med valuesa [ 7 ] [ ,"5 ] = "a string" a [2 ] [ 9 ] = 23 # Hent valuesputs en [ 7 ] [ 5 ] legger [ 2 ] [ 9 ]
6
Benytt deg av muligheten til å "kjede "-metoden kaller i Ruby. For eksempel , returnerer Array.new metode en matrise. Du kan kjede en annen metode samtalen til at å kalle en metode på den returnerte matrisen . Siden du er kjeding metodene , og ikke bruker en retur uttalelse, trenger du ikke variabelnavnet enten: def MDA (bredde , høyde) Array.new (bredde ) map { Array.new (høyde ) } slutten . !