Elementer i en matrise kan være av noe som.
Denne forseggjorte opplæringen vil hjelpe deg å forstå hvordan du jobber med Ruby -matriser fra det grunnleggende til matriseoperasjoner.
Det grunnleggende
Ta en eksempelkode under butikkens informasjon om brukere og deres faktureringsinformasjon.
user1_card_number = "4509 4285 4006 0689"
user2_card_number = "4922 0805 2092 4480"
user3_card_number = "4947 2643 4488 8995"
Eksemplet over lagrer kredittkortinformasjon i individuelle variabler. Hvis vi har mer enn 100 brukere, blir koden veldig vanskelig å lese og repeterende, og det er der matriser spiller inn.
For å lage en matrise i Ruby, gir vi den et navn og legger til elementene i et par firkantede parenteser atskilt med komma.
Følgende er et eksempel:
card_info = [
"4509 4285 4006 0689",
"4922 0805 2092 4480",
"4947 2643 4488 8995"
]
Koden er mer lesbar og enkel å vedlikeholde, da vi bare har en enkelt variabel å administrere.
Skriving av matriser
For å skrive ut en matrise, kan du bruke PUTS -metoden etterfulgt av navnet på matrisvariabelen.
For eksempel:
card_info = [
"4509 4285 4006 0689",
"4922 0805 2092 4480",
"4947 2643 4488 8995"
]
setter card_info
Når vi har kjørt programmet ovenfor, skal det skrive ut elementene som er lagret i matrisen:
$ Ruby -matriser.RB
4509 4285 4006 0689
4922 0805 2092 4480
4947 2643 4488 8995
Få tilgang til individuelle elementer
Vi har tilgang til hvert element i en matrise ved å bruke indeksen. En indeks er som elementets plassering i hele matrisen.
I Ruby starter indeksering i posisjon 0. Det betyr at det første elementet i en matrise er på indeks 0.
For å få tilgang til varen på en spesifikk indeks, kaller vi navnet på matrisvariabelen etterfulgt av elementets indeks i et par firkantede parenteser som:
card_info = [
"4509 4285 4006 0689",
"4922 0805 2092 4480",
"4947 2643 4488 8995"
]
setter card_info [1]
I dette eksemplet får vi tilgang til det andre elementet i matrisen som:
$ Ruby -matriser.RB
4922 0805 2092 4480
Hvis du får tilgang til en indeks utenfor rekkevidden av matriseelementene i Ruby, vil du få null som returverdi.
For eksempel, i programmet nedenfor, er den maksimale indeksen 2. Hvis vi får tilgang til en indeks høyere enn det, bør vi få null som:
card_info = [
"4509 4285 4006 0689",
"4922 0805 2092 4480",
"4947 2643 4488 8995"
]
card_info [5]
=> nil
Multitype-matrise
Som vi nevnte i begynnelsen av opplæringen, kan matriser inneholde flere datatyper.
Følgende er for eksempel en matrise med flere elementtyper.
PERSONLY_INFO = [
"Alyssa King",
"4947 2643 4488 8995",
[
"221b Baker Street",
877
],
32
]
Eksemplet over viser en matrise med flere datatyper, inkludert en annen matrise.
Anta at vi ønsker å få tilgang til elementer i et nestet utvalg, som vist ovenfor. I et slikt tilfelle må vi først få tilgang til den nestede matrisen ved å bruke indeksen som:
PERSONLY_INFO [2]
Når vi har det nestede matrisen, kan vi begynne å få tilgang til elementene ved å bruke deres tilsvarende indekser.
MERK: Indekser i en nestet matrise start på 0.
setter personal_info [2] [0]
Eksempelkoden ovenfor vil skrive ut verdien som er lagret i den første indeksen for den nestede matrisen.
Få matrise lengde og elementindeks
Når du jobber med et stort utvalg, kan det være utfordrende å vite hvor mange elementer som er i det. Du kan bruke lengdemetoden for å få antall elementer i matrisen.
setter personal_info.lengde
=> 4
Lengde -metoden vil returnere det faktiske antall elementer i matrisen. Husk imidlertid indeksen over matriser starter 0. Derfor er indeksen for det siste elementet i en matrise:
Array.Lengde - 1
La oss si at du kjenner elementet som er lagret i matrisen, men ikke indeksen. For å bestemme indeksen, kan du bruke indeksmetoden som:
setter personal_info.Indeks ("Alyssa King")
=> 0
Metoden returnerer indeksen for elementet hvis den blir funnet.
Endre matriser
Nå som vi har laget matrisen, hvordan legger vi til eller fjerner elementer i matrisen?
La oss ta vår første kortoppstilling:
card_info = [
"4509 4285 4006 0689",
"4922 0805 2092 4480",
"4947 2643 4488 8995"
]
Legge til elementer
Det er flere måter å legge til elementer i en matrise.
# 1 - Bruke neste indeks
Den første tildeler følgende indeks en verdi. For eksempel, i Cards_info -matrisen, er følgende indeks 3, vi kan sette en verdi som:
card_info [3] = "4539 8298 7119 8259"
Ovennevnte syntaks vil legge et nytt element til de eksisterende matriseelementene som:
setter card_info
=> ["4509 4285 4006 0689", "4922 0805 2092 4480", "4947 2643 4488 8995"]
#2 - Bruke Push () -metode
Det kan være vanskelig å spore følgende indeks i en matrise, og tilordne feil indeks vil overskrive det eksisterende elementet.
For å unngå et slikt scenario, kan vi bruke push -metoden.
card_info.Push ("4532 7335 0011 9834")
Push -metoden er gunstig, da den automatisk legger elementet til matrisen, og eliminerer behovet for å bekymre deg for indeksen.
Du kan også bruke venstre skiftnotasjon for å legge til et element i matrisen. Denne metoden fungerer på samme måte som push -metoden.
card_info << "4916 4324 7803 6973"
#3 - Bruke unshift () -metode
Push -metoden legger til elementer på slutten av matrisen. For å legge til et element i begynnelsen av matrisen, kan vi bruke unshift () -metoden.
card_info.Unshift ("4645 8814 2354 1982")
=> ["4645 8814 2354 1982", "4509 4285 4006 0689", "4922 0805 2092 4480", "4947 2643 4488 8995"]]]
Du vil merke at det nye elementet er i begynnelsen av matrisen.
Fjerne elementer
Ruby gir tre måter å fjerne elementer i en matrise.
#1 - Bruke POP () -metoden
POP -metoden er tett lik push -metoden, bortsett fra at den fjerner det siste elementet i matrisen.
card_info.pop
skriv ut kort_info
["4509 4285 4006 0689", "4922 0805 2092 4480"]
#2 - Bruke Delete () -metoden
Slettmetoden finner alle forekomster av elementet du spesifiserer og fjerner dem fra matrisen.
La oss ta en annen rekke som inneholder duplikater som:
db = [
"Mysql",
"PostgreSql",
"Fauna DB",
"Neo4j",
"Dynamo DB",
"Postrgesql",
"Mysql",
"Mongodb"
]
I eksempelet har vi to dupliserte elementer. Hvis vi bruker slettemetoden og spesifiserer "MySQL" -elementet, vil metoden fjerne alle elementene som samsvarer med den verdien.
db.slett ("mysql")
Skriv ut DB
Den resulterende matrisen er under:
["PostgreSql", "Fauna DB", "Neo4j", "Dynamo DB", "PostRgesql", "MongoDB"]
#3 - Bruke metoden Shift ()
Som navnet antyder, ligner skiftmetoden. Imidlertid fjerner det det første elementet i matrisen.
db = [
"Mysql",
"PostgreSql",
"Fauna DB",
"Neo4j",
"Dynamo DB",
"Postrgesql",
"Mysql",
"Mongodb"
]
db.skifte
Skriv ut DB
Metoden vil fjerne det første elementet og returnere matrisen som:
["PostgreSql", "Fauna DB", "Neo4j", "Dynamo DB", "PostRgesql", "MySQL", "MongoDB"]
Iterere over en matrise
For å iterere hvert element i matrisen, kan vi bruke hver metode.
db.Hver do | element |
setter element
slutt
Ovennevnte metode returnerer hvert element i matrisen.
Mysql
PostgreSql
..
Mysql
Mongodb
Du kan også bruke en for loop som vist:
for element i db do
setter element
slutt
Konklusjon
Denne guiden lærte deg hvordan du jobber med Ruby Arrays, fra det grunnleggende til en mellombruker. Det er godt å merke seg at det er flere til matriser utenfor omfanget av denne guiden. Vurder dokumentasjonen for å oppdage mer.