I Ruby refererer en hash til en samling nøkkelverdipar. Det ligner tett på en matrise i den forstand at den kan lagre flere relaterte verdier, men indekseringen gjøres via nøkler i stedet for heltall. Hvis du er kjent med Python -programmeringsspråk, kan du tenke på rubinhashes som Python Dictionaries.
På den annen side refererer en matrise til en bestilt samling av verdier. Du kan tenke på en matrise som en liste over elementer med en bestemt indeks eller stilling for hvert element.
Du kan støte på slike forekomster der du trenger å utvide en indeks til en Ruby Hash. Dette gjør det enkelt å kartlegge et gitt sett med verdier i en matrise til et tilsvarende ordboklignende format.
Denne opplæringen dekker forskjellige metoder for å konvertere en gitt rubinarray til en hasj.
Eksempel på matrise
For å demonstrere hvordan vi kan konvertere en matrise til en hasj i Ruby, vil vi jobbe med eksempelet som er gitt i det følgende:
arr = [1, 'mysql', 2, 'postgreSql', 3, 'sqlite']
I dette tilfellet ønsker vi å konvertere matrisen til en hasj der den numeriske verdien fungerer som nøkkelen, og strengverdiene er verdien av hasj.
Konvertere en matrise til hasj ved hjelp av TO_H -metoden
I de siste Ruby-versjonene har vi tilgang til TO_H-metoden som lar oss konvertere en todimensjonal matrise til en Ruby Hash.
Derfor trenger vi først å konvertere den endimensjonale matrisen til en todimensjonal matrise.
Vi kan oppnå dette ved hjelp av Every_slice -metoden. Denne metoden er definert i Ruby Enumerable -modulen som er inkludert i matriseklassen. Det lar oss iterere over elementene i en matrise i skiver av en gitt størrelse.
Vi kan bruke denne metoden som demonstrert i følgende kode:
arr.hver_slice (2)
=> #
Dette returnerer et tellerobjekt som vi kan konvertere til en matrise ved hjelp av TO_A -metoden som vist på følgende:
IRB (hoved): 004: 0> arr.hver_slice (2).to_a
=> [[1, "mysql"], [2, "postgreSql"], [3, "sqlite"]]
Dette skal gi oss en todimensjonal matrise, som demonstrert tidligere.
Til slutt kan vi konvertere verdiene til A har som vist i følgende:
IRB (hoved): 005: 0> arr.hver_slice (2).to_a.to_h
Den resulterende hasj er som følger:
=> 1 => "mysql", 2 => "postgreSql", 3 => "sqlite"
Konvertere en matrise til hasj ved hjelp av hash :: [] metoden
Notasjonen []] i Ruby Hash -klassen lar oss returnere en ny hasj med de medfølgende verdiene.
For å konvertere en matrise til en hasj ved hjelp av denne metoden, kan vi bruke følgende kommando:
IRB (Main): 011: 0> Hash ['1', 'MySql', '2', 'PostgreSql', '3', 'Sqlite']
=> "1" => "mysql", "2" => "postgreSql", "3" => "sqlite"
Dette bør returnere en ny hasj uten å måtte konvertere matrisen til en todimensjonal matrise.
Konklusjon
Vi diskuterte hvordan du kan bruke matrisen#til_h -metoden og hash :: [] metoder for å konvertere en matrise til en hasj i Ruby -programmeringsspråket.