Itererer gjennom en matrise i Ruby

Itererer gjennom en matrise i Ruby
Ruby er et kraftig programmeringsspråk som ser ut til å omfavne begrepet lett å lære og bruke tungt. Når det gjelder å utføre nesten grunnleggende oppgaver i Ruby, er sjansen stor for at det er en innebygd metode for det.

Denne opplæringen vil diskutere forskjellige måter du kan iterere over varene i en Ruby -matrise.

Opprette en matrise

I Ruby kan vi lage en matrise ved å legge til en liste over komma-separerte verdier i et par firkantede parenteser. Hvert element i matrisen er kjent som et element og kan være av hvilken som helst Ruby -type.

MyArray = [1,2,3.9, "Hello", "World", [], ]

Eksemplet ovenfor viser en enkel matrise som består av forskjellige elementtyper som heltall, flyter, strenger, matriser, hasj og mer.

I noen tilfeller kan det hende du har en rekke kun som strengtype. I så fall kan du opprette og vedlegge verdiene i %w

Eksempel:

Databaser = %W MySQL, PostgreSql, Redis, Memcached, MongoDB, Elasticsearch

Hvis vi bruker syntaks ovenfor for å lage en matrise, vil Ruby skille verdiene med hvitespasninger og lage individuelle elementer, som vist nedenfor:

Skriv ut databaser
["MySQL,", "PostgreSql,", "Redis,", "Memcached,", "Mongodb,", "Elasticsearch"]

Iterere over en matrise

Itering over en matrise og jobbe med individuelle elementer er et grunnleggende programmeringskonsept. Ruby gir oss noen få metoder for å utføre en slik oppgave.

Ved hjelp av hver metode

Ruby enumerable#Hver metode er den mest forenklede og populære måten å iterere individuelle elementer i en matrise.

Den godtar to argumenter: den første er en enumererbar liste, og den andre er en blokk. Det tar hvert element i den medfølgende listen og utfører blokken, og tar den gjeldende varen som en parameter.

Her er et eksempel:

Databaser = %W MySQL, PostgreSql, Redis, Memcached, MongoDB, Elasticsearch
databaser.Hver gjør | i |
setter i
slutt

Ovennevnte enkle eksempel illustrerer hvordan metoden fungerer. Det tar hvert element i databaser -arrayen og kjører en blokk med gjeldende element. I vårt eksempel er blokken en enkel setter metode.

Den resulterende utgangen er hvert element i matrisen som:

$ Ruby Iterator.RB
Mysql,
.. ,
Mongodb,
Elasticsearch

Ved hjelp av hver_with_index -metoden

I noen tilfeller kan det være lurt å skrive ut elementet og dets posisjonsindeks i matrisen. For å gjøre dette, kan vi bruke Every_with_index -metoden

Det fungerer som hver metode, men returnerer begge elementene og deres indeksposisjoner som:

Databaser = %W MySQL, PostgreSql, Redis, Memcached, MongoDB, Elasticsearch
databaser.hver_with_index do | element, indeks |
setter " #index => #element"
slutt

I eksemplet over vil Ruby returnere hvert element i matrisen som er kartlagt til indeksen som vist:

0 => mysql,
1 => PostgreSql,
.. ,
5 => Elasticsearch

Bruker en for loop

Som på de fleste programmeringsspråk, kan du også iterere over elementene i en matrise ved å bruke en for loop.

Databaser = %W MySQL, PostgreSql, Redis, Memcached, MongoDB, Elasticsearch
for element i databaser
setter element
slutt

Eksemplet ovenfor fungerer som hver metode og returnerer individuelle elementer i matrisen.

Bruke SELECT

Ruby har også en annen metode for å iterere over elementer i en matrise: SELECT -metoden. Den utvalgte metoden fungerer som vist i eksemplet nedenfor

Databaser = %W MySQL, PostgreSql, Redis, Memcached, MongoDB, Elasticsearch
databaser.Velg Do | i |
setter i
slutt

SELECT -metoden er nyttig når du vil ha et undergruppe som oppfyller spesifikke kriterier. Velg for eksempel bare til og med verdier i en matrise som vist:

Nums = [1,20, 23, 28, 2, 100, 34, 53, 22, 21, 11]
Numre.Velg Do | i |
Jeg.til og med?
slutt

Eksemplet ovenfor skal bare returnere en delmengde av NUMS -matrisen der elementet er til og med.

=> [20, 28, 2, 100, 34, 22]

Ved hjelp av kart

Kartmetoden er en annen måte å iterere over elementene i en matrise. Funksjonaliteten fungerer på samme måte som en hvilken som helst array iterator i Ruby. Imidlertid er det hovedsakelig nyttig når du vil transformere matrisen.

Nums = [1,20, 23, 28, 2, 100, 34, 53, 22, 21, 11]
Numre.Kart gjør | i |
I * 3
slutt

Eksemplet over vil returnere et nytt objekt med elementene i matrisen multiplisert med 3.

Hvis du vil påvirke den opprinnelige matrisen, kan du bruke kartet! metode.

Nums = [1,20, 23, 28, 2, 100, 34, 53, 22, 21, 11]
Numre.kart! gjør | i |
I * 3
slutt
utskriftsnumre
[3, 60, 69, 84, 6, 300, 102, 159, 66, 63, 33]

I eksemplet over, kartet! Metode endrer kildeoppstillingen og oppretter en matrise med de spesifiserte modifikasjonene.

Konklusjon

Denne guiden diskuterte hvordan du kan iterere over elementer i en matrise som bruker for løkker og andre innebygde rubinmetoder.