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