taulukot eivät ole ainoa tapa hallita muuttujien kokoelmia Rubiini. Toinen tyyppi muuttujien kokoelmasta on hash, jota kutsutaan myös assosiatiiviseksi taulukkoksi. Hajautus on kuin taulukko siinä suhteessa, että se on muuttuja, joka tallentaa muut muuttujat. Hajautus on kuitenkin toisin kuin taulukko siinä mielessä, että tallennettuja muuttujia ei tallenneta tietyssä järjestyksessä ja ne haetaan avaimella sijainnin sijaan kokoelmassa.
Luo välilyönti avain- / arvopareilla
Hakemisto on hyödyllinen tallentamaan ns avain / arvo-parit. Avain / arvo-parilla on tunniste, joka osoittaa mitä hash-muuttujaa haluat käyttää ja muuttuja, joka tallennetaan siihen kohtaan hashissa. Opettaja voi esimerkiksi tallentaa opiskelijan arvosanat hashiin. Bobin luokkaan pääsee hash-näppäimellä "Bob", ja siihen sijaintiin tallennettu muuttuja olisi Bobin luokka.
Tiivistemuuttuja voidaan luoda samalla tavalla kuin taulukkomuuttuja. Yksinkertaisin tapa on luoda tyhjä hash-objekti ja täyttää se avain / arvo-pareilla. Huomaa, että indeksioperaattoria käytetään, mutta numeron sijasta käytetään opiskelijan nimeä.
Muista, että hashit ovat järjestämättömiä, mikä tarkoittaa, että ryhmässä ei ole määriteltyä alkua tai loppua. Joten, et voi liittää hashiin. Arvot lisätään yksinkertaisesti hashiin hakemistooperaattorin avulla.
#! / usr / bin / env ruby
arvosanat = Hash.new
arvosanat ["Bob"] = 82
arvosanat ["Jim"] = 94
arvosanat ["Billy"] = 58
antaa arvosanat ["Jim"]
Hash Literals
Kuten taulukot, myös hash voidaan luoda hashilla literals. Hash-kirjaimet käyttävät kihara-aukkoja hakasulujen sijasta, ja avainarvoparit yhdistetään =>. Esimerkiksi hash, jossa on yksi avain / arvo-pari Bob / 84, näyttäisi tältä: {"Bob" => 84}. Muita avain- / arvopareja voidaan lisätä hash-kirjaimiin erottamalla ne pilkuilla. Seuraavassa esimerkissä luodaan räjähdys arvosanoilla useille opiskelijoille.
#! / usr / bin / env ruby
arvosanat = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
antaa arvosanat ["Jim"]
Muuttujien käyttäminen rivillä
Toisinaan joudut käyttämään kaikkia hash-muuttujia. Voit silmukoida hash-muuttujien avulla käyttämällä kukin silmukka, vaikka se ei toimi samalla tavalla kuin kukin silmukka matriisimuuttujilla. Koska hash ei ole järjestetty, järjestys missä kukin silmukka avain / arvo-parien yli ei välttämättä ole sama kuin järjestys, johon ne lisäys. Tässä esimerkissä silmukoiden tiiviste silmukoidaan ja tulostetaan.
#! / usr / bin / env ruby
arvosanat = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
arvosanat.joka tehdä | nimi, luokka |
asettaa "# {name}: # {grade}"
pää