Hvordan lage en flerdimensjonal matrise i Ruby

click fraud protection

Hvordan lage en flerdimensjonal matrise i Ruby. Selv om Ruby ikke gir eksplisitt støtte for flerdimensjonale arrays, kan du implementere en selv hvis du har grunnleggende kunnskaper om språket. Du må i hovedsak lage en "array of arrays" der hvert element i arrayen inneholder enda en array. For å lage en slik flerdimensjonal array i Ruby, kan du skrive en metode som brukes til å generere arrays av arrays slik at koden ikke trenger å gjentas.

Lag en flerdimensjonal matrise i Ruby

Trinn 1

Skriv skjelettet til metoden. Denne metoden vil ta en rekke dimensjonsargumenter og returnere en tom flerdimensjonal matrise med disse dimensjonene. For eksempel, for en 10x10 matrise, kall denne metoden mda (10,10):def mda (bredde, høyde) end

Dagens video

Steg 2

Lag en rekke breddeelementer.

Trinn 3

Lag en rekke høydeelementer for hvert element i matrisen. Dette gjør "arrayen av matriser" som skal brukes som en todimensjonal matrise. For å lage tomme arrays med en bestemt lengde, bruk Array.new-konstruktøren med lengden som et argument. Til å begynne med vil alle verdier i matrisen være null.

Trinn 4

Bruk kartet! metode også. Kartet! metoden itererer hvert element i en matrise, kjører en blokk for hver og tildeler resultatet av blokken til matriseelementet. Det samme resultatet kan oppnås ved å bruke en for-løkke, men kartet! metoden er mer kortfattet: def mda (bredde, høyde) a = Array.new (width) a.map! { Array.new (height) }retur aend

Trinn 5

Bruk denne matrisen med operatøren subscript (firkantede parenteser []). For eksempel, hvis du hadde en 10x10-matrise kalt "a" og ville ha 7,3-elementet, ville du si a[7][3]: a = mda (10,10)# Fyll matrisen med verdisa[7][5] = "en streng"a[2][9] = 23# Hent verdier angir a[7][5]legger a[2][9]

Trinn 6

Dra nytte av muligheten til å "kjede" metodekall i Ruby. For eksempel returnerer Array.new-metoden en matrise. Du kan lenke en annen metodekall til den for å kalle en metode på den returnerte matrisen. Siden du lenker metodene, og ikke bruker en retursetning, trenger du heller ikke variabelnavnet: def mda (width, height) Array.new (width).map!{ Array.new (height) }end

Tips

Ruby er veldig uttrykksfull. MDA-metoden kan være en kort og konsis enkelt kodelinje. Ekstra linjer og nøkkelord får bare koden til å se mer komplisert ut enn den egentlig er. Returerklæringen er ikke nødvendig i Ruby. Ruby-metoder og -blokker returnerer automatisk resultatet av den siste setningen som ble utført i metoden eller blokken.