nizovi nisu jedini način upravljanja zbirkama varijabli u sustavu Rubin. Druga vrsta zbirke varijabli je paprikaš, koji se naziva i asocijativni niz. Hash je poput niza u tome što je varijabla koja pohranjuje druge varijable. No, hash se razlikuje od niza u tome što pohranjene varijable nisu pohranjene određenim redoslijedom, a dohvaćene su ključem umjesto položaja u zbirci.
Napravite sjene s parovima ključ / vrijednost
Hash je koristan za pohranjivanje takozvanih parovi ključ / vrijednost. Par ključeva / vrijednosti ima identifikator koji označava kojoj varijabli hash-a želite pristupiti i varijablu za pohranjivanje u tom položaju u hashu. Na primjer, učitelj može pohraniti ocjene učenika u hash. Bobovoj ocjeni pristupili bi se u hashu pomoću ključa "Bob", a varijabla pohranjena na toj lokaciji bila bi Bobova ocjena.
Hash-varijabla se može stvoriti na isti način kao i varijabla matrice. Najjednostavnija metoda je stvoriti prazan hash objekt i napuniti ga parovima ključ / vrijednost. Imajte na umu da se koristi operator indeksa, ali umjesto broja koristi se ime učenika.
Zapamtite da hashe nisu uređeni, što znači da nema definiranog početka ili kraja kao u nizu. Dakle, ne možete dodavati hash. Vrijednosti se jednostavno ubacuju u hash koristeći indeks operator.
#! / usr / bin / env rubin
ocjene = Hash.new
ocjene ["Bob"] = 82
ocjene ["Jim"] = 94
ocjene ["Billy"] = 58
stavlja ocjene ["Jim"]
Hash Literali
Kao i nizovi, hešovi se mogu kreirati pomoću hash-a literali. Hash literali koriste kovrčave zagrade umjesto kvadratnih zagrada, a parovima ključnih vrijednosti pridružuju se =>. Na primjer, hash s jednim parom ključa / vrijednosti Bob / 84 izgledao bi ovako: {"Bob" => 84}. Dodatni parovi ključ / vrijednost mogu se dodati u hash literal razdvajajući ih zarezima. U sljedećem primjeru stvara se hash s ocjenama za nekoliko učenika.
#! / usr / bin / env rubin
ocjene = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
stavlja ocjene ["Jim"]
Pristup varijablama u hashu
Ponekad možete pristupiti svakoj varijabli u hashu. Još uvijek možete petljati preko varijabli u hashu koristeći svaki petlja, neće raditi na isti način kao pomoću svaki petlja s varijablama niza. Jer hash je neuređen, redoslijed kojim svaki će se petljati nad parovima ključ / vrijednost možda nisu isti kao redoslijed u koji ste ih umetnuli. U ovom primjeru, presjek ocjena bit će prekriven i ispisan.
#! / usr / bin / env rubin
ocjene = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
grade.each do | ime, ocjena |
stavlja "# {ime}: # {razred}"
kraj