Un Hash en Ruby es una estructura dinámica (es decir se puede ir agregando y eliminando elementos durante la ejecución del programa)
Veremos en este concepto como agregar elementos a nuestra estructura tipo Hash.
Crear un Hash que permita almacenar productos, utilizar como clave el nombre del producto y como valor el precio del mismo.
1) Cargar productos.
2) Imprimir el Hash completo
productos = Hash.new
loop do
print "Ingrese el nombre del producto:"
prod = gets.chomp
print "Ingrese el precio:"
precio = gets.to_f
productos[prod] = precio
print "¿Desea ingresar otro producto [s/n]?"
opcion = gets.chomp
if opcion == "n"
break
end
end
puts productos
Si ejecutamos el programa y cargamos un par de productos:

Primero creamos el Hash:
productos = Hash.new
Dentro de un ciclo repetitivo pedimos ingresar el nombre del producto y su precio, procedemos a agregar un elemento al Hash productos:
print "Ingrese el nombre del producto:" prod = gets.chomp print "Ingrese el precio:" precio = gets.to_f productos[prod] = precio
Cuando el operador no desea cargar más productos finalizamos la estructura repetitivo loop ejecutando un break:
print "¿Desea ingresar otro producto [s/n]?"
opcion = gets.chomp
if opcion == "n"
break
end
Mostramos el Hash completo llamando a puts:
puts productos
Crear un Hash que permita almacenar nombres de empleados de una empresa y su sueldo, utilizar como clave el nombre del empleado y como valor el sueldo del mismo.
1) Cargar por teclado los empleados y sus sueldos.
2) Ingresar por teclado un nombre de empleado y mostrar su sueldo o un mensaje que indique que no existe dicho empleado.
empleados = Hash.new
loop do
print "Ingrese el nombre del empleado:"
nom = gets.chomp
print "Ingrese el sueldo:"
sueldo = gets.to_f
empleados[nom] = sueldo
print "¿Desea ingresar otro empleado [s/n]?"
opcion = gets.chomp
if opcion == "n"
break
end
end
print "Ingrese el nombre de un empleado a consultar su sueldo:"
nom = gets.chomp
if empleados.include?(nom)
puts "Su sueldo es #{empleados[nom]}"
else
puts "No existe un empleado con dicho nombre"
end
Luego de crear y cargar el Hash en forma similar al problema anterior procedemos a ingresar el nombre de un empleado:
print "Ingrese el nombre de un empleado a consultar su sueldo:" nom = gets.chomp
De forma similar a los Array la clase Hash tiene un método include? que le pasamos como parámetro el dato a buscar entre las claves del Hash, si existe retorna true y en caso negativo retorna false:
if empleados.include?(nom)
puts "Su sueldo es #{empleados[nom]}"
else
puts "No existe un empleado con dicho nombre"
end