Intern
¿Qué es un hash (HASH) en Ruby?
sobes.tech AI
Respuesta de la IA
Hash (Hash) en Ruby es una colección ordenada de pares "clave-valor", donde cada clave única está vinculada a un valor específico. Las claves suelen ser símbolos (Symbol) o cadenas (String), pero pueden ser cualquier objeto que implemente los métodos eql? y hash.
Características del hash:
- Orden: Desde Ruby 1.9, los hashes mantienen el orden de inserción de los elementos.
- Acceso por clave: El acceso a los valores se realiza rápidamente mediante la clave correspondiente.
- Tamaño dinámico: Los hashes pueden expandirse o comprimirse a medida que se añaden o eliminan elementos.
- Sin duplicados de claves: Cada clave es única dentro de un hash.
Ejemplos de creación de hashes:
# Uso de literal
persona = { "nombre" => "Alicia", "edad" => 30 }
# Uso de símbolos como claves (forma más común y eficiente)
configuración = { :tema => "oscuro", :idioma => "ru" }
# Notación estilo hash con símbolos (Ruby 1.9+)
config = { host: "localhost", puerto: 8080 }
# Usando el constructor Hash.new
hash_vacío = Hash.new
Operaciones principales con hashes:
| Operación | Ejemplo | Descripción |
|---|---|---|
| Acceso a valor | persona["nombre"] |
Devuelve el valor asociado a la clave "nombre" |
| Añadir/modificar | persona["ciudad"] = "Nueva York" |
Añade o modifica la pareja clave-valor |
| Eliminar | persona.delete("edad") |
Elimina la pareja con la clave "edad" |
| Tamaño | persona.size o persona.length |
Devuelve el número de pares en el hash |
| Verificación de clave | persona.key?("nombre") |
Verifica si la clave existe en el hash |
| Verificación de valor | persona.value?(30) |
Verifica si el valor existe en el hash |
| Iteración | `persona.each { | clave, valor |
| Claves | persona.keys |
Devuelve un array con todas las claves |
| Valores | persona.values |
Devuelve un array con todos los valores |
Ejemplo de uso:
datos_usuario = {
nombre: "Boris",
edad: 45,
ciudad: "Moscú"
}
# Acceso a datos
puts datos_usuario[:nombre] # => Boris
# Añadir un nuevo campo
datos_usuario[:trabajo] = "Desarrollador"
# Modificar un valor
datos_usuario[:edad] = 46
# Eliminar un campo
datos_usuario.delete(:ciudad)
# Iterar sobre el hash
datos_usuario.each do |clave, valor|
puts "#{clave}: #{valor}"
end