Sobes.tech
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