Även Ruby inte ger uttryckligt stöd för flerdimensionella arrayer , kan du implementera en själv om du har grundläggande kunskaper i språket . Du måste i huvudsak skapa en " array av arrays " där varje element i arrayen innehåller ännu en array . För att skapa en sådan flerdimensionell array i Ruby , kan du skriva en metod som används för att generera matriser matriser så att koden inte behöver upprepas . Instruktioner Review, Skapa en flerdimensionell array i Ruby
1
Skriv skelettet av metoden . Denna metod kommer att ta ett antal dimension argument och returnera en tom flerdimensionell array av dessa dimensioner . Till exempel , för en 10x10 matris , kallar denna metod mda ( 10,10 ) : . Def MDA ( bredd , höjd ) end
2
Skapa en uppsättning bredd element
3
Skapa en matris med höjd element för varje element i arrayen . Detta gör den " samling av vektorer" som kommer att användas som en tvådimensionell matris . För att skapa tomma arrayer av en viss längd , använd Array.new konstruktorn med längden som ett argument . Inledningsvis kommer alla värden i arrayen vara noll .
4
Använd kartan ! metod också. Den karta ! metod itererar varje element i en array , driver ett block för varje en och tilldelar resultatet av blocket till arrayelementet . Samma resultat kan uppnås med hjälp av en for-slinga , men den karta! Metoden är mer koncis : def MDA ( bredd , höjd ) a = Array.new ( bredd ) a.map ! { Array.new ( höjd ) } återvänder aend
5
Använd denna array med index ( hakparenteser [ ] ) operatör . Till exempel , om du hade en 10x10 matris som kallas " a " och ville ha 7,3 elementet , skulle du säga ett [ 7 ] [ 3 ] : a = mda ( 10,10 ) Fyll # arrayen med valuesa [ 7 ] [ ,"5 ] = " en sträng " a [ 2 ] [ 9 ] = 23 Hämta # valuesputs a [ 7 ] [ 5 ] sätter [ 2 ] [ 9 ]
6
utnyttja möjligheten att " kedjan " metodanrop i Ruby . Exempelvis returnerar Array.new metoden en array. Du kan kedja annan metod samtalet till att anropa en metod på den returnerade arrayen . Eftersom du är länkning metoder , och inte använder en return , behöver du inte variabelnamnet antingen : def MDA ( bredd , höjd ) Array.new ( bredd ) map { Array.new ( höjd ) } end . ! Addera