El valor del hash puede ser tanto literal como un numero:
contactos = { "Alberto" => 000000000, "Barreto" => 111111111, 159 => 222222222 } puts(contactos["Alberto"]) # 000000000 puts(contactos[159]) # 222222222
Si duplicamos la llave, se sobreescribira con el ultimo valor y nos salta un warning:
contactos = { "Alberto" => 000000000, "Barreto" => 111111111, 159 => 222222222, "Alberto" => 333333333 } puts(contactos["Alberto"]) # 333333333
Podemos modificar los valores una vez creados:
contactos = { "Alberto" => 000000000, "Barreto" => 111111111, 159 => 222222222, } contactos["Alberto"] = 444444444 puts(contactos["Alberto"]) # 444444444
Podemos nombrar los hashes como un símbolo de dos formas:
contactos = { :Alberto => 000000000, :Barreto => 111111111, Candido:222222222, Dario:333333333 } puts(contactos[:Alberto]) # 000000000 puts(contactos[:Dario]) # 333333333
Añadir Hashes
contactos = { Alberto: 000000000, Barreto: 111111111 } contactos[:Dario] = 222222222 contactos.store(:Candido,333333333) puts(contactos) # {:Alberto=>0, :Barreto=>111111111, :Dario=>222222222, :Candido=>333333333}
Merge no modifica la colección original, devuelve una colección nueva modificada
contactos = { Alberto: 000000000, Barreto: 111111111 } nuevosContactos = contactos.merge({Dario:222222222,Pepe:333333333}) puts(contactos) # {:Alberto=>0, :Barreto=>111111111} puts(nuevosContactos) # {:Alberto=>0, :Barreto=>111111111, :Dario=>222222222, :Pepe=>333333333}
Conocer el numero de elementos de la coleccion:
contactos = { Alberto: 000000000, Barreto: 111111111 } puts("#{contactos.length}") # 2
Listar todas las llaves de nuestra colección de hash:
puts(contactos.keys) # [Alberto, Barreto]
Listas todos los valores de nuestra coleccion de hash:
puts(contactos.values) # [000000000, 111111111]
Conocer si existe un hash especifico en la colección:
puts(contactos.has_key?(:Alberto)) # true puts(contactos.has_key?(:Daniel)) # false
Conocer si existe un valor especifico en la colección:
puts(contactos.has_value?(000000000)) #true puts(contactos.has_value?(012345678)) #false