Un hash es una estructura que magatzema dades como un diccionari ho faria. També es diuen llistes associatives.

La diferència que existeix antre un hash i una llista és la forma d’accedir a les dades que es magatzemen.

En una llista podem accedir a les dades utilizant la posició en la qual es troba l’element que volem accedir.

En un hash la clau mitjançant la que podem accedir a la informació potser qualsevol tipus d’objecte.

1. Definint un hash

La forma més senzilla de definir un hash és amb doble clau.

Els hash tenen dues parts: la clau i el valor.

tutor = {{ "nombre " => "Uriel", "edad" => 23, 20 => "Vint", [] => "llista" }}

puts tutor

Output

hash.rb:1: syntax error, unexpected '}', expecting =>

L’avantatge del hash és que es pot accedir al valor cridant l’a clau.

tutor = {{ "nombre " => "Uriel", "edad" => 23, 20 => "Vint", [] => "llista" }}

puts tutor["nombre"]

Output

Uriel

2. Modificar un hash

tutor = {{ "nombre " => "Uriel", "edad" => 23, 20 => "Vint", [] => "llista" }}

tutor["cursos"] = 10

puts tutor["cursos"]

Output

10

3. Definir un valor per defecte per a les posicions en les quals ni n’hi ha res

tutor = {{ "nombre " => "Uriel", "edad" => 23, 20 => "Vint", [] => "llista" }}

tutor.default = ":)"

puts tutor[5]

Output

:)

4. Sintaxis alternativa

Imaginem que totes les claus que estem utilizant son símbols. Els símbols s’identifiquen perquè tenen dos punts davant de la clau.

tutor = {:nombre => "Uriel", :edad => "23", :cursos => 10}

puts tutor

Output

{:nombre=>"Uriel", :edad=>"23", :cursos=>10}

Així doncs, podem utilitzar una sintaxi alternativa, que és més fàcil de llegir:

tutor = {nombre: "Uriel", edad: "23", cursos: 10}

puts tutor[:nombre]

Output

Uriel

5. Iterar

tutor = {nombre: "Uriel", edad: "23", cursos: 10}

tutor.each do |clau,valor|
  puts "En #{clau} està guardat #{valor}"
end

Output

En nombre està guardat Uriel
En edad està guardat 23
En cursos està guardat 10