Modificar Hashes
Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 75 de 88.
Los hashes no son estáticos una vez creados. Puedes añadir nuevos pares clave-valor, actualizar valores existentes y eliminar entradas mientras se ejecuta tu programa.
Para añadir un nuevo par o actualizar un valor existente, asigna a la clave usando corchetes:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Añade un nuevo par clave-valor
person["age"] = 26 # Actualiza el valor existente
puts person # Salida: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Si la clave existe, el valor se reemplaza. Si no existe, se añade un nuevo par al hash.
Para eliminar un par clave-valor, utiliza el método delete con la clave que deseas eliminar:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Salida: {"name"=>"Alice", "age"=>25}El método delete devuelve el valor que fue eliminado, lo cual puede ser útil si necesitas usarlo:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # Salida: 25Si intentas eliminar una clave que no existe, Ruby simplemente devuelve nil sin generar un error.
Desafío
FácilLee cuatro líneas de entrada:
- Un nombre de estudiante (string)
- Una calificación inicial (integer)
- Una nueva calificación para actualizar (integer)
- Un nuevo par clave-valor en el formato
key:value(por ejemplo,subject:Math)
Crea un hash llamado student con los siguientes pares clave-valor iniciales:
"name"mapeado al nombre del estudiante"grade"mapeado a la calificación inicial (como un entero)
Luego realiza estas modificaciones:
- Actualiza la clave
"grade"con el nuevo valor de la calificación - Agrega un nuevo par clave-valor utilizando la clave y el valor de la cuarta entrada (el valor debe seguir siendo un string)
- Elimina la clave
"name"del hash y almacena el valor eliminado
Imprime el nombre eliminado en la primera línea, luego imprime el hash final en la segunda línea.
Por ejemplo, si las entradas son Alice, 85, 92, y subject:Math, la salida debería ser:
Alice
{"grade"=>92, "subject"=>"Math"}Si las entradas son Bob, 70, 75, y status:passing, la salida debería ser:
Bob
{"grade"=>75, "status"=>"passing"}Si las entradas son Charlie, 100, 95, y note:excellent, la salida debería ser:
Charlie
{"grade"=>95, "note"=>"excellent"}Hoja de referencia
Para añadir un nuevo par clave-valor o actualizar un valor existente en un hash, utiliza corchetes:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Añade un nuevo par clave-valor
person["age"] = 26 # Actualiza el valor existente
puts person # Salida: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Si la clave existe, el valor se reemplaza. Si no existe, se añade un nuevo par.
Para eliminar un par clave-valor, utiliza el método delete:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Salida: {"name"=>"Alice", "age"=>25}El método delete devuelve el valor eliminado:
removed_age = person.delete("age")
puts removed_age # Salida: 25Si intentas eliminar una clave que no existe, Ruby devuelve nil sin generar un error.
Pruébalo tú mismo
# Leer entrada
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# TODO: Escribe tu código a continuación
# 1. Crea un hash llamado 'student' con las llaves "name" y "grade"
# 2. Actualiza la llave "grade" con el nuevo valor de la calificación
# 3. Analiza el key_value_pair y agrégalo al hash
# 4. Elimina la llave "name" y almacena el valor eliminado
# Imprimir el nombre eliminado
puts removed_name
# Imprimir el hash final
puts studentEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operadores lógicos Parte 47Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario10FizzBuzz con un giro
Descripción general del juegoEl método FizzBuzz2Variables y tipos de datos
Números y variablesTipo de dato StringTipo de dato BooleanTipo de dato SymbolComprobación de tipos de datosConvenciones de nomenclaturaResumen: Creación de variables5Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleIf - Else anidadosSentencia Unless8Bucles
Bucle For con rangosBucle WhileBreakNextRepaso - FactorialBucle TimesBucle UntilBucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosOperador móduloAtajos aritméticosResumen - Matemáticas simplesOperadores de comparación6Entrada y Salida Básica
Salida con putsSalida con print y pSalida con variablesEntrada con getsMétodo chompConversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso