Intern
Ce este un hash (HASH) în Ruby?
sobes.tech AI
Răspuns de la AI
Hash (Hash) în Ruby este o colecție ordonată de perechi "cheie-valoare", unde fiecare cheie unică este asociată cu o anumită valoare. Cheile sunt de obicei simboluri (Symbol) sau șiruri (String), dar pot fi orice obiect care implementează metodele eql? și hash.
Caracteristici ale hash-ului:
- Ordine: Din Ruby 1.9, hash-urile păstrează ordinea inserției elementelor.
- Acces după cheie: Accesul la valori se face rapid prin cheia corespunzătoare.
- Dimensiune dinamică: Hash-urile pot crește sau micșora pe măsură ce se adaugă sau se elimină elemente.
- Fără duplicate de chei: Fiecare cheie este unică în interiorul unui hash.
Exemple de creare a hash-urilor:
# Utilizarea literalului
persoana = { "nume" => "Alice", "vârstă" => 30 }
# Utilizarea simbolurilor ca chei (cel mai comun și eficient mod)
setări = { :temă => "întunecat", :limbă => "ru" }
# Notație în stil cheie-valoare (Ruby 1.9+)
config = { host: "localhost", port: 8080 }
# Cu constructorul Hash.new
hash_gol = Hash.new
Operații principale cu hash-urile:
| Operație | Exemplu | Descriere |
|---|---|---|
| Acces la valoare | persoana["nume"] |
Returnează valoarea pentru cheia "nume" |
| Adăugare/modificare | persoana["oraș"] = "New York" |
Adaugă sau modifică perechea cheie-valoare |
| Ștergere | persoana.delete("vârstă") |
Șterge perechea cu cheia "vârstă" |
| Dimensiune | persoana.size sau persoana.length |
Returnează numărul de perechi din hash |
| Verificare cheie | persoana.key?("nume") |
Verifică dacă cheia există în hash |
| Verificare valoare | persoana.value?(30) |
Verifică dacă valoarea există în hash |
| Iterare | `persoana.each { | cheie, valoare |
| Chei | persoana.keys |
Returnează un array cu toate cheile |
| Valori | persoana.values |
Returnează un array cu toate valorile |
Exemplu de utilizare:
date_utilizator = {
nume: "Boris",
vârstă: 45,
oraș: "Moscova"
}
# Acces la date
puts date_utilizator[:nume] # => Boris
# Adăugarea unui câmp nou
date_utilizator[:job] = "Dezvoltator"
# Modificarea valorii
date_utilizator[:vârstă] = 46
# Ștergerea câmpului
date_utilizator.delete(:oraș)
# Parcurgerea hash-ului
date_utilizator.each do |cheie, valoare|
puts "#{cheie}: #{valoare}"
end