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 los valores existentes y eliminar entradas mientras se ejecuta tu programa.
Para añadir un nuevo par o actualizar un valor existente, asigna el valor 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 # Muestra: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Si la clave existe, el valor se reemplaza. Si no existe, se agrega un nuevo par al hash.
Para eliminar un par clave-valor, usa el método delete con la clave que quieras eliminar:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Imprime: {"name"=>"Alice", "age"=>25}El método delete devuelve el valor que se eliminó, lo cual puede ser útil si necesitas usarlo:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # Imprime: 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:
- El nombre de un estudiante (cadena)
- Una calificación inicial (entero)
- Una nueva calificación para actualizar (entero)
- Un nuevo par clave-valor en el formato
key:value(p. ej.,subject:Math)
Crea un hash llamado student con los siguientes pares clave-valor iniciales:
"name"asociado al nombre del estudiante"grade"asociado a la calificación inicial (como entero)
Después realiza estas modificaciones:
- Actualiza la clave
"grade"con el nuevo valor de la calificación - Añade un nuevo par clave-valor usando la clave y el valor de la cuarta entrada (el valor debe seguir siendo una cadena)
- Elimina la clave
"name"del hash y guarda el valor eliminado
Imprime el nombre eliminado en la primera línea y, después, 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"}Pruébalo tú mismo
# Lee la 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 claves "name" y "grade"
# 2. Actualiza la clave "grade" con el nuevo valor de la nota
# 3. Analiza key_value_pair y añádelo al hash
# 4. Elimina la clave "name" y guarda el valor eliminado
# Muestra el nombre eliminado
puts removed_name
# Muestra 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 falsoPractica por tu cuenta: Compilador de Ruby online