Gli hash, conosciuti come array associativi, mappe o dizionari, sono simili agli array in quanto sono una collezione di indici che referenziano oggetti. Comunque, mentre si indicizzano gli array ad interi, gli hash si possono indicizzare con qualsiasi tipo di oggetto: stringhe, espressioni regolari e così via. Quando si salva un valore in un hash, si inviano due oggetti: l'indice, normalmente chiamato
key, e il valore. Di conseguenza si può richiamare il valore, indicizzando l'hash attraverso la stessa chiave. I valori in un hash possono essere oggetti di qualsiasi tipo. L'esempio
p040myhash.rb seguente usa hash di caratteri: una lista di chiavi a cui corrispondono coppie di valori tra virgolette.
<span style="font-size:1.0em">
h = {'dog' => 'canine', 'cat' => 'feline', 'donkey' => 'asinine', 12 => 'dodecine'}puts h.length # 3
puts h # 'canine'
puts h
puts h[12]</span>
L'output è:
<span style="font-size:1.0em">
>ruby p040myhash.rb
4
canine
catfeline12dodecinedonkeyasininedogcanine
dodecine
>Exit code: 0</span>
Comparati con gli array, gli hash hanno un vantaggio: essi usano qualsiasi oggetto come un indice. Comunque, i loro elementi non sono ordinati, così che non è facile usare un hash come uno stack o una coda. Gli hash hanno un valore di default, che è ritornato quando un'attesa è fatta per accedere a chiavi che non esistono nell'hash. Per default questo valore è
nil. La classe
Hash ha molti metodi, un elenco è presente
on line.
In alternativa all'uso delle stringhe, si può usare un simbolo. Ecco un esempio,
p041symbolhash.rb:
<span style="font-size:1.0em">people = Hash.new
people[:nickname] = 'IndianGuru'
people[:language] = 'Marathi'
people[:lastname] = 'Talim'
puts people[:lastname] # Talim</span>
"Traduzione e adattamento a cura di Francesca Beatrice Cice. La versione originale del tutorial di
Satish Talim può essere trovata su
rubylearning.com"