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.