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