Selvom Ruby yder ikke direkte støtte til flerdimensionale arrays , kan du implementere en selv , hvis du har et grundlæggende kendskab til sproget . Du skal i det væsentlige skabe en " array af arrays ", hvor hvert element i arrayet holder endnu et array. At skabe en sådan multidimensional array i Ruby, kan du skrive en metode, der anvendes til at generere de arrays af arrays , så koden ikke behøver at blive gentaget. Instruktioner
Opret en flerdimensional Array i Ruby
1
Skriv skelettet af metoden. Denne metode vil tage en række dimension argumenter og returnere et tomt multidimensional matrix af disse dimensioner. For eksempel, for en 10x10 matrix kalde denne metode MDA ( 10,10 ) : . Def MDA ( bredde, højde ) ende
2
Opret en vifte af bredde elementer
< br > 3
Opret en vifte af højde elementer for hvert element i matrix . Dette gør " array af arrays ", der vil blive brugt som et todimensionalt array. For at oprette tomme arrays af en bestemt længde , skal du bruge Array.new konstruktøren med længden som et argument. I første omgang vil alle værdier i arrayet være nul .
4
Brug kortet ! metode samt . Kortet! Metoden gentages hvert element i et array , kører en blok for hver én og tildeler resultatet af blok til array element . Det samme resultat kan opnås ved hjælp af en for-løkke , men kort! Metoden er mere kortfattet : def MDA ( bredde, højde ) a = Array.new (bredde) a.map ! { Array.new (højde) } returnerer aend
5
Brug dette array med sænket (firkantet parentes []) operatør. For eksempel, hvis du havde en 10x10 matrix kaldet "a" og ønskede 7,3 element ville du sige en [7] [3]: a = MDA ( 10,10 ) # Fyld array med valuesa [7] [ ,"5] = " en streng " a [2 ] [9] = 23 # Hent valuesputs en [7 ] [5] lægger [2 ] [9]
6
Udnyt muligheden for at "kæden" metodekald i Ruby . For eksempel returnerer Array.new metoden et array. Du kan kæde en anden metode opkald hen at for at kalde en metode på den returnerede array. Da du er kæde de metoder , og ikke bruger en tilbagevenden erklæring , behøver du ikke variabelnavnet enten def MDA ( bredde, højde ) Array.new (bredde) kort { Array.new (højde) } ende. ! KAYAK