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
