Hur man skapar en flerdimensionell matris i Ruby. Även om 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 arrayer" där varje element i arrayen innehåller ytterligare 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 arrays av arrays så att koden inte behöver upprepas.
Skapa en multidimensionell array i Ruby
Steg 1
Skriv skelettet av metoden. Denna metod kommer att ta ett antal dimensionsargument och returnera en tom flerdimensionell array av dessa dimensioner. Till exempel, för en 10x10 array, kalla denna metod mda (10,10):def mda (bredd, höjd) end
Dagens video
Steg 2
Skapa en uppsättning breddelement.
Steg 3
Skapa en array av höjdelement för varje element i arrayen. Detta gör "arrayen av arrayer" som kommer att användas som en tvådimensionell array. För att skapa tomma arrayer av en specifik längd, använd Array.new-konstruktorn med längden som ett argument. Inledningsvis kommer alla värden i arrayen att vara noll.
Steg 4
Använd kartan! metod också. Kartan! metoden itererar varje element i en array, kör ett block för vart och ett och tilldelar resultatet av blocket till arrayelementet. Samma resultat kan uppnås med en for-loop, men kartan! Metoden är mer kortfattad: def mda (bredd, höjd) a = Array.new (width) a.map! { Array.new (height) }retur aend
Steg 5
Använd den här arrayen med operatorn subscript (hakparenteser []). Till exempel, om du hade en 10x10 array som heter "a" och ville ha elementet 7,3, skulle du säga a[7][3]: a = mda (10,10)# Fyll arrayen med värdesa[7][5] = "en sträng"a[2][9] = 23# Hämta värden sätter a[7][5]lägger a[2][9]
Steg 6
Dra fördel av möjligheten att "kedja" metodanrop i Ruby. Till exempel returnerar metoden Array.new en array. Du kan koppla ett annat metodanrop till det för att anropa en metod på den returnerade arrayen. Eftersom du kedjar ihop metoderna och inte använder en retursats, behöver du inte heller variabelnamnet: def mda (width, height) Array.new (width).map!{ Array.new (height) }end
Dricks
Ruby är väldigt uttrycksfull. MDA-metoden kan vara en kort och koncis enkel rad med kod. Extra rader och nyckelord gör bara att koden ser mer komplicerad ut än den egentligen är. Returuppgiften är inte nödvändig i Ruby. Ruby-metoder och -block returnerar automatiskt resultatet av den senaste satsen som kördes i metoden eller blocket.