Hasta ahora hemos presentado la estructuras de datos tipo Array. Ahora presentaremos y comenzaremos a utilizar la estructura de datos tipo Hash.
La estructura de datos tipo Hash utiliza una clave para acceder a un valor. El subíndice puede ser un entero, un string etc.
Podemos relacionar la estructura de tipo Hash con conceptos que conocemos:
Hay muchos problemas de la realidad que se pueden representar mediante un Hash.
En forma similar a un Array un Hash es una estructura de datos mutable es decir podemos agregar elementos, modificar y borrar.
Definir un Hash que almacene los nombres de paises como clave y como valor la cantidad de habitantes. Imprimir luego el Hash completo y la cantidad de habitantes de un país en particular.
paises = {"argentina" => 40000000, "españa" => 46000000, "brasil" => 190000000, "uruguay" => 3400000} puts paises puts "La cantidad de habitantes de españa es: #{paises["españa"]}"
La primer forma que veremos para crear un Hash e inmediatamente inicializar cuatro componentes se hace con la sintaxis:
paises = {"argentina" => 40000000, "españa" => 46000000, "brasil" => 190000000, "uruguay" => 3400000}
Indicamos primero la clave:
"argentina"
Luego el operador:
=>
Finalmente indicamos el valor para dicha clave:
40000000
Utilizamos las llaves en lugar de los corchetes que se utilizan en los Array.
Para imprimir todo el Hash:
puts paises
Para acceder a un valor del Hash debemos indicar entre corchetes la clave que queremos acceder:
puts "La cantidad de habitantes de españa es: #{paises["españa"]}"
Si la clave no existe en el Hash se retorna un nil.
paises = {} paises["argentina"] = 40000000 paises["españa"] = 46000000 paises["brasil"] = 190000000 paises["uruguay"] = 3400000 puts paises puts "La cantidad de habitantes de españa es: #{paises["españa"]}"
De esta forma primero creamos un Hash vacío y luego cargamos 4 elementos por asignación uno a uno.
paises = Hash.new paises["argentina"] = 40000000 paises["españa"] = 46000000 paises["brasil"] = 190000000 paises["uruguay"] = 3400000 puts paises puts "La cantidad de habitantes de españa es: #{paises["españa"]}"
En esta forma se crea el Hash llamando al método new de la clase Hash.
paises = {:argentina => 40000000, :españa => 46000000, :brasil => 190000000, :uruguay => 3400000} puts paises puts "La cantidad de habitantes de españa es: #{paises[:españa]}"
Cuando se puede en lugar de definir un string como clave se define un símbolo (en Ruby para definir un símbolo se le antecede el caracter :)
El uso de símbolos en lugar de string hace más eficiente el programa.
paises = {argentina: 40000000, españa: 46000000, brasil: 190000000, uruguay: 3400000} puts paises puts "La cantidad de habitantes de españa es: #{paises[:españa]}"
Una variante cuando utilizamos símbolos como clave en un Hash es disponer el caracter : luego del nombre del símbolo y sacar el operador =>
ejercicio086.rb diccionario1 = {"red" => "rojo", "blue" => "azul", "yellow" => "amarillo", "green" => "verde"} puts "La traducción de blue es #{diccionario1["blue"]}" puts "La traducción de green es #{diccionario1["green"]}" # otras sintaxis para definir un Hash diccionario2 = {} diccionario2["red"] = "rojo" diccionario2["blue"] = "azul" diccionario2["yellow"] = "amarillo" diccionario2["green"] = "verde" puts "La traducción de blue es #{diccionario2["blue"]}" puts "La traducción de green es #{diccionario2["green"]}" diccionario3 = Hash.new diccionario3["red"] = "rojo" diccionario3["blue"] = "azul" diccionario3["yellow"] = "amarillo" diccionario3["green"] = "verde" puts "La traducción de blue es #{diccionario3["blue"]}" puts "La traducción de green es #{diccionario3["green"]}" diccionario4 = {:red => "rojo", :blue => "azul", :yellow => "amarillo", :green => "verde"} puts "La traducción de blue es #{diccionario4[:blue]}" puts "La traducción de green es #{diccionario4[:green]}" diccionario5 = {red: "rojo", blue: "azul", yellow: "amarillo", green: "verde"} puts "La traducción de blue es #{diccionario5[:blue]}" puts "La traducción de green es #{diccionario5[:green]}"