Intern
Wat is een hash (HASH) in Ruby?
sobes.tech AI
Antwoord van AI
Hash (Hash) in Ruby is een geordende collectie van "sleutel-waarde" paren, waarbij elke unieke sleutel gekoppeld is aan een specifieke waarde. De sleutels zijn meestal symbolen (Symbol) of strings (String), maar kunnen elk object zijn dat de methoden eql? en hash implementeert.
Kenmerken van een hash:
- Volgorde: Sinds Ruby 1.9 behouden hashes de volgorde van invoer.
- Toegang via sleutel: Toegang tot waarden gebeurt snel via de bijbehorende sleutel.
- Dynamische grootte: Hashes kunnen groeien of krimpen naarmate er elementen worden toegevoegd of verwijderd.
- Unieke sleutels: Elke sleutel is uniek binnen een hash.
Voorbeelden van het maken van hashes:
# Gebruik van literal
persoon = { "naam" => "Alice", "leeftijd" => 30 }
# Gebruik van symbolen als sleutels (meest gebruikelijk en efficiënt)
instellingen = { :thema => "donker", :taal => "ru" }
# Notatie in de stijl van sleutel-waarde (Ruby 1.9+)
config = { host: "localhost", poort: 8080 }
# Met de Hash.new constructor
lege_hash = Hash.new
Belangrijkste operaties met hashes:
| Operatie | Voorbeeld | Beschrijving |
|---|---|---|
| Toegang tot waarde | persoon["naam"] |
Geeft de waarde voor de sleutel "naam" terug |
| Toevoegen/wijzigen | persoon["stad"] = "New York" |
Voegt een paar toe of wijzigt de waarde voor de sleutel |
| Verwijderen | persoon.delete("leeftijd") |
Verwijdert het paar met de sleutel "leeftijd" |
| Grootte | persoon.size of persoon.length |
Geeft het aantal paren in de hash terug |
| Sleutelcontrole | persoon.key?("naam") |
Controleert of de sleutel in de hash bestaat |
| Waardecontrole | persoon.value?(30) |
Controleert of de waarde in de hash bestaat |
| Iteratie | `persoon.each { | sleutel, waarde |
| Sleutels | persoon.keys |
Geeft een array van alle sleutels |
| Waarden | persoon.values |
Geeft een array van alle waarden |
Voorbeeld van gebruik:
gebruiker_data = {
naam: "Boris",
leeftijd: 45,
stad: "Moskou"
}
# Toegang tot gegevens
puts gebruiker_data[:naam] # => Boris
# Toevoegen van een nieuw veld
gebruiker_data[:baan] = "Ontwikkelaar"
# Wijzigen van de waarde
gebruiker_data[:leeftijd] = 46
# Verwijderen van een veld
gebruiker_data.delete(:stad)
# Over het hash itereren
gebruiker_data.each do |sleutel, waarde|
puts "#{sleutel}: #{waarde}"
end