Sobes.tech
Intern

Cos'è un hash (HASH) in Ruby?

sobes.tech AI

Risposta dell'AI

Hash (Hash) in Ruby è una collezione ordinata di coppie "chiave-valore", dove ogni chiave unica è associata a un valore specifico. Le chiavi sono solitamente simboli (Symbol) o stringhe (String), ma possono essere qualsiasi oggetto che implementa i metodi eql? e hash.

Caratteristiche dell'hash:

  • Ordinamento: Dalla versione Ruby 1.9, gli hash mantengono l'ordine di inserimento degli elementi.
  • Accesso tramite chiave: L'accesso ai valori avviene rapidamente tramite la chiave corrispondente.
  • Dimensione dinamica: Gli hash possono espandersi o ridursi man mano che vengono aggiunti o rimossi elementi.
  • Nessuna chiave duplicata: Ogni chiave è unica all'interno di un hash.

Esempi di creazione di hash:

# Uso di letterale
persona = { "nome" => "Alice", "età" => 30 }

# Uso di simboli come chiavi (metodo più comune ed efficiente)
impostazioni = { :tema => "scuro", :lingua => "ru" }

# Notazione nello stile chiave-valore (Ruby 1.9+)
config = { host: "localhost", port: 8080 }

# Con il costruttore Hash.new
hash_vuoto = Hash.new

Operazioni principali con gli hash:

Operazione Esempio Descrizione
Accesso al valore persona["nome"] Restituisce il valore associato alla chiave "nome"
Aggiunta/modifica persona["città"] = "New York" Aggiunge o modifica la coppia chiave-valore
Rimozione persona.delete("età") Rimuove la coppia con la chiave "età"
Dimensione persona.size o persona.length Restituisce il numero di coppie nell'hash
Verifica chiave persona.key?("nome") Controlla se la chiave esiste nell'hash
Verifica valore persona.value?(30) Controlla se il valore esiste nell'hash
Iterazione `persona.each { chiave, valore
Chiavi persona.keys Restituisce un array di tutte le chiavi
Valori persona.values Restituisce un array di tutti i valori

Esempio di utilizzo:

dati_utente = {
  nome: "Boris",
  età: 45,
  città: "Mosca"
}

# Accesso ai dati
puts dati_utente[:nome]   # => Boris

# Aggiunta di un nuovo campo
dati_utente[:lavoro] = "Sviluppatore"

# Modifica del valore
dati_utente[:età] = 46

# Rimozione del campo
dati_utente.delete(:città)

# Iterazione sul hash
dati_utente.each do |chiave, valore|
  puts "#{chiave}: #{valore}"
end