Introducción

En Ruby, un hash es una colección de pares clave-valor, similar a un diccionario en otros lenguajes de programación. Los hashes son extremadamente útiles cuando necesitas asociar datos relacionados y acceder a ellos de manera eficiente mediante una clave.

Conceptos Clave

  • Clave (Key): Un identificador único para un valor en el hash. Puede ser cualquier objeto, aunque comúnmente se usan símbolos o cadenas.
  • Valor (Value): El dato asociado a una clave. Puede ser cualquier objeto.

Creación de Hashes

Sintaxis Básica

Puedes crear un hash utilizando llaves {} y separando las claves y valores con => o :.

# Usando la sintaxis de hash rocket (=>)
hash_rocket = { "nombre" => "Juan", "edad" => 30, "ciudad" => "Madrid" }

# Usando la nueva sintaxis de símbolo (:) para claves de tipo símbolo
symbol_hash = { nombre: "Juan", edad: 30, ciudad: "Madrid" }

Ejemplo Práctico

# Creando un hash con información de una persona
persona = {
  nombre: "Ana",
  edad: 25,
  ciudad: "Barcelona"
}

puts persona[:nombre]  # Salida: Ana
puts persona[:edad]    # Salida: 25
puts persona[:ciudad]  # Salida: Barcelona

Acceso y Modificación de Elementos

Acceso a Valores

Puedes acceder a los valores de un hash utilizando sus claves.

persona = { nombre: "Ana", edad: 25, ciudad: "Barcelona" }
puts persona[:nombre]  # Salida: Ana

Modificación de Valores

Puedes modificar los valores de un hash asignando un nuevo valor a una clave existente.

persona[:edad] = 26
puts persona[:edad]  # Salida: 26

Añadir Nuevos Pares Clave-Valor

Para añadir un nuevo par clave-valor, simplemente asigna un valor a una nueva clave.

persona[:profesion] = "Ingeniera"
puts persona[:profesion]  # Salida: Ingeniera

Métodos Útiles para Hashes

keys y values

Estos métodos devuelven todas las claves y valores del hash, respectivamente.

persona = { nombre: "Ana", edad: 25, ciudad: "Barcelona" }
puts persona.keys   # Salida: [:nombre, :edad, :ciudad]
puts persona.values # Salida: ["Ana", 25, "Barcelona"]

each

El método each permite iterar sobre cada par clave-valor en el hash.

persona.each do |clave, valor|
  puts "#{clave}: #{valor}"
end
# Salida:
# nombre: Ana
# edad: 25
# ciudad: Barcelona

delete

El método delete elimina un par clave-valor del hash.

persona.delete(:ciudad)
puts persona  # Salida: {:nombre=>"Ana", :edad=>25}

Ejercicios Prácticos

Ejercicio 1: Crear y Acceder a un Hash

Instrucciones:

  1. Crea un hash llamado libro con las siguientes claves y valores:
    • título: "El Quijote"
    • autor: "Miguel de Cervantes"
    • año: 1605
  2. Imprime el valor de la clave autor.

Solución:

libro = { titulo: "El Quijote", autor: "Miguel de Cervantes", año: 1605 }
puts libro[:autor]  # Salida: Miguel de Cervantes

Ejercicio 2: Modificar y Añadir Elementos a un Hash

Instrucciones:

  1. Usando el hash libro del ejercicio anterior, cambia el valor de la clave año a 1615.
  2. Añade una nueva clave género con el valor "Novela".
  3. Imprime el hash actualizado.

Solución:

libro[:año] = 1615
libro[:género] = "Novela"
puts libro
# Salida: {:titulo=>"El Quijote", :autor=>"Miguel de Cervantes", :año=>1615, :género=>"Novela"}

Ejercicio 3: Iterar sobre un Hash

Instrucciones:

  1. Usando el hash libro del ejercicio anterior, itera sobre cada par clave-valor e imprime cada uno en el formato clave: valor.

Solución:

libro.each do |clave, valor|
  puts "#{clave}: #{valor}"
end
# Salida:
# titulo: El Quijote
# autor: Miguel de Cervantes
# año: 1615
# género: Novela

Conclusión

Los hashes son una estructura de datos fundamental en Ruby, proporcionando una manera eficiente de almacenar y acceder a pares clave-valor. En esta lección, hemos cubierto cómo crear, acceder, modificar y eliminar elementos en un hash, así como algunos métodos útiles para trabajar con ellos. Con estos conocimientos, estarás bien preparado para utilizar hashes en tus proyectos de Ruby.

En el próximo tema, exploraremos los iteradores en Ruby, que te permitirán trabajar de manera más eficiente con colecciones como arrays y hashes.

© Copyright 2024. Todos los derechos reservados