Arrays zijn niet de enige manier om collecties van variabelen in te beheren Robijn. Een ander type verzameling variabelen is de hash, ook een associatieve array genoemd. Een hash is als een array omdat het een variabele is die andere variabelen opslaat. Een hash is echter anders dan een array omdat de opgeslagen variabelen niet in een bepaalde volgorde worden opgeslagen en ze worden opgehaald met een sleutel in plaats van op basis van hun positie in de verzameling.
Maak een hash met sleutel / waarde-paren
Een hash is handig om op te slaan wat wordt genoemd sleutel / waarde paren. Een sleutel / waarde-paar heeft een ID om aan te geven tot welke variabele van de hash u toegang wilt hebben en een variabele om op die positie in de hash op te slaan. Een leraar kan bijvoorbeeld de cijfers van een student in een hash opslaan. Het cijfer van Bob zou toegankelijk zijn in een hash door de sleutel "Bob" en de variabele die op die locatie is opgeslagen, zou het cijfer van Bob zijn.
Een hash-variabele kan op dezelfde manier worden gemaakt als een matrixvariabele. De eenvoudigste methode is om een leeg hash-object te maken en het te vullen met sleutel / waarde-paren. Merk op dat de index-operator wordt gebruikt, maar de naam van de student wordt gebruikt in plaats van een nummer.
Onthoud dat hashes ongeordend zijn, wat betekent dat er geen gedefinieerd begin of einde is zoals in een array. Je kunt dus geen hash toevoegen. Waarden worden eenvoudig in de hash ingevoegd met behulp van de indexoperator.
#! / usr / bin / env ruby
cijfers = Hash.new
cijfers ["Bob"] = 82
cijfers ["Jim"] = 94
cijfers ["Billy"] = 58
zet cijfers ["Jim"]
Hash Literals
Net als arrays kunnen hashes worden gemaakt met hash letterlijk. Hash-literals gebruiken de accolades in plaats van vierkante haakjes en de sleutelwaardeparen worden verbonden door =>. Een hash met een enkele sleutel / waarde-paar van Bob / 84 ziet er bijvoorbeeld als volgt uit: {"Bob" => 84}. Extra sleutel / waarde-paren kunnen worden toegevoegd aan de letterlijke hash door ze te scheiden met komma's. In het volgende voorbeeld wordt een hash gemaakt met de cijfers voor een aantal studenten.
#! / usr / bin / env ruby
grades = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
zet cijfers ["Jim"]
Toegang krijgen tot variabelen in de hash
Er kunnen momenten zijn dat u toegang moet krijgen tot elke variabele in de hash. Je kunt nog steeds een lus maken over de variabelen in de hash met de elk lus, hoewel het niet op dezelfde manier werkt als het gebruik van de elk lus met matrixvariabelen. Omdat een hash niet is geordend, de volgorde waarin elk zal lus over de sleutel / waarde paren mogelijk niet hetzelfde zijn als de volgorde waarin u ze hebt ingevoegd. In dit voorbeeld wordt een hash van cijfers doorgelust en afgedrukt.
#! / usr / bin / env ruby
grades = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
grades.each do | name, grade |
zet "# {name}: # {grade}"
einde