Intern
Kas ir hash (HASH) Ruby?
sobes.tech AI
Atbilde no AI
Hash (Hash) Ruby ir organizēta pāru "atslēga-vērtība" kolekcija, kur katrs unikāls atslēga ir saistīta ar noteiktu vērtību. Atslēgas parasti ir simboli (Symbol) vai virknes (String), bet tās var būt jebkādi objekti, kuriem ir īstenotas metodes eql? un hash.
Hash īpašības:
- Kārtība: No Ruby 1.9 versijas hash'iem ir atbalsts elementu ievietošanas secībai.
- Piekļuve pēc atslēgas: Pieeja vērtībām ir ātra pēc atbilstošās atslēgas.
- Dinamiska izmērs: Hash'iem var paplašināties vai samazināties, pievienojot vai noņemot elementus.
- Unikālas atslēgas: Katrs atslēga ir unikāla vienā hash'ā.
Hash izveides piemēri:
# Izmantojot literālo formu
person = { "name" => "Alice", "age" => 30 }
# Izmantojot simbolus kā atslēgas (biežāk un efektīvāk)
settings = { :theme => "dark", :language => "ru" }
# Notācija pēc vārdu stila (Key-Value Pair Shorthand), no Ruby 1.9
config = { host: "localhost", port: 8080 }
# Ar Hash.new konstruktoru
empty_hash = Hash.new
Galvenās operācijas ar hash:
| Operācija | Piemērs | Apraksts |
|---|---|---|
| Pieeja vērtībai | person["name"] |
Atgriež vērtību pēc atslēgas "name" |
| Pievienošana/izmaiņa | person["city"] = "New York" |
Pievieno vai maina vērtību pēc atslēgas |
| Dzēšana | person.delete("age") |
Dzēš pāri pēc atslēgas "age" |
| Izmērs | person.size vai person.length |
Atgriež pāru skaitu hash'ā |
| Atslēgas pārbaude | person.key?("name") |
Pārbauda, vai atslēga ir hash'ā |
| Vērtības pārbaude | person.value?(30) |
Pārbauda, vai vērtība ir hash'ā |
| Iterācija | `person.each { | key, value |
| Atslēgu atgriešana | person.keys |
Atgriež visus atslēgu masīvā |
| Vērtību atgriešana | person.values |
Atgriež visus vērtību masīvā |
Piemērs lietošanai:
user_data = {
name: "Борис",
age: 45,
city: "Москва"
}
# Pieeja datiem
puts user_data[:name] # => Борис
# Jauna lauka pievienošana
user_data[:job] = "Разработчик"
# Vērtības maiņa
user_data[:age] = 46
# Lauka dzēšana
user_data.delete(:city)
# Hash iterācija
user_data.each do |key, value|
puts "#{key}: #{value}"
end