arrayer är inte det enda sättet att hantera samlingar av variabler i Rubin. En annan typ av samling variabler är hash, även kallad en associerande grupp. En hash är som en matris genom att det är en variabel som lagrar andra variabler. Emellertid är en hash till skillnad från en matris genom att de lagrade variablerna inte lagras i någon särskild ordning, och de hämtas med en nyckel istället för efter deras position i samlingen.
Skapa en hasj med nyckel- / värdepar
En hash är användbar för att lagra vad som kallas nyckel / värde par. Ett nyckel- / värdepar har en identifierare som anger vilken variabel av hash du vill komma åt och en variabel för att lagra i den positionen i hash. Till exempel kan en lärare lagra studentens betyg i en hash. Bobs betyg skulle nås i en hash med nyckeln "Bob" och variabeln lagrad på den platsen skulle vara Bobs klass.
En hashvariabel kan skapas på samma sätt som en matrisvariabel. Den enklaste metoden är att skapa ett tomt hashobjekt och fylla det med nyckel- / värdepar. Observera att indexoperatören används, men studentens namn används istället för ett nummer.
Kom ihåg att hashes är oordnade, vilket betyder att det inte finns någon definierad början eller slut som det finns i en matris. Så du kan inte lägga till en hash. Värden införs helt enkelt i hash med indexoperatören.
#! / usr / bin / env ruby
betyg = Hash.new
betyg ["Bob"] = 82
betyg ["Jim"] = 94
betyg ["Billy"] = 58
sätter betyg ["Jim"]
Hash-bokstäver
Precis som matriser kan hashes skapas med hash litteraler. Hash-bokstäverna använder de lockiga hängslen istället för fyrkantiga parenteser och nyckelvärdesparna förenas av =>. Exempelvis skulle en hash med ett enda nyckel- / värdepar av Bob / 84 se ut så här: {"Bob" => 84}. Ytterligare nyckel- / värdepar kan läggas till hash-bokstaven genom att separera dem med komma-tecken. I följande exempel skapas en hash med betyg för ett antal elever.
#! / usr / bin / env ruby
betyg = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
sätter betyg ["Jim"]
Få åtkomst till variabler i Hash
Det kan finnas tillfällen då du måste komma åt varje variabel i hash. Du kan fortfarande slinga över variablerna i hash med hjälp av varje loop, men det fungerar inte på samma sätt som att använda varje slinga med matrisvariabler. Eftersom en hash är oordnad, i vilken ordning varje kommer att slinga över nyckel- / värdeparen kanske inte är desamma som i vilken ordning du placerade dem. I detta exempel kommer en hash av betyg att slingas över och skrivas ut.
#! / usr / bin / env ruby
betyg = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
betyg.och gör | namn, betyg |
sätter "# {name}: # {grade}"
slutet