Intern
Mis on hash (HASH) Ruby's?
sobes.tech AI
Vastus AI-lt
Hash (Hash) Ruby on organiseeritud paaride "võti-väärtus" kogumik, kus iga unikaalne võti on seotud kindla väärtusega. Võtmed on tavaliselt sümbolid (Symbol) või stringid (String), kuid võivad olla mis tahes objektid, millele on rakendatud meetodid eql? ja hash.
Hashi omadused:
- Järjekord: Alates Ruby 1.9 versioonist toetavad hashid elementide sisestamise järjekorda.
- Juurdepääs võtme järgi: Väärtustele pääseb kiiresti vastava võtme kaudu.
- Dünaamiline suurus: Hashid võivad kasvada või väheneda, lisades või eemaldades elemente.
- Unikaalsed võtmed: Iga võti on hashis unikaalne.
Hashi loomise näited:
# Kasutades kirjeldusega
person = { "name" => "Alice", "age" => 30 }
# Kasutades sümboleid võtmetena (levinum ja tõhusam)
settings = { :theme => "dark", :language => "ru" }
# Notatsioon stiilis võtme-sõna (Key-Value Pair Shorthand), alates Ruby 1.9
config = { host: "localhost", port: 8080 }
# Hashi konstruktor Hash.new
empty_hash = Hash.new
Peamised operatsioonid hashidega:
| Operatsioon | Näide | Kirjeldus |
|---|---|---|
| Väärtusele pääsemine | person["name"] |
Tagastab väärtuse võtmega "name" |
| Lisamine/muutmine | person["city"] = "New York" |
Lisab või muudab väärtust võtmega |
| Kustutamine | person.delete("age") |
Kustutab paari võtmega "age" |
| Suurus | person.size või person.length |
Tagastab paaride arvu hashis |
| Võtme olemasolu | person.key?("name") |
Kontrollib, kas võti on hashis |
| Väärtuse olemasolu | person.value?(30) |
Kontrollib, kas väärtus on hashis |
| Iteratsioon | `person.each { | key, value |
| Võtmete tagastamine | person.keys |
Tagastab kõigi võtmete massiivi |
| Väärtuste tagastamine | person.values |
Tagastab kõigi väärtuste massiivi |
Näide kasutamisest:
user_data = {
name: "Борис",
age: 45,
city: "Москва"
}
# Andmetele juurdepääs
puts user_data[:name] # => Борис
# Uue välja lisamine
user_data[:job] = "Разработчик"
# Väärtuse muutmine
user_data[:age] = 46
# Välja eemaldamine
user_data.delete(:city)
# Hashi läbimine
user_data.each do |key, value|
puts "#{key}: #{value}"
end