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