Símbolos como claves de Hash
Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 78 de 88.
Hasta ahora, has estado usando cadenas como claves de hash con la sintaxis hash rocket. Sin embargo, los desarrolladores de Ruby suelen usar símbolos como claves en su lugar, lo que ofrece un enfoque más limpio y eficiente.
¿Recuerdas los símbolos de antes? Son identificadores ligeros e inmutables que comienzan con dos puntos. Al usar símbolos como claves, Ruby proporciona una sintaxis abreviada especial:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # Salida: {:name=>"Alice", :age=>25, :city=>"Paris"}Observa cómo name: reemplaza a :name =>. Este atajo solo funciona cuando la clave es un símbolo. Para acceder a los valores, utiliza el símbolo con corchetes:
person = {name: "Alice", age: 25}
puts person[:name] # Salida: Alice
puts person[:age] # Salida: 25Agregar y modificar entradas funciona de la misma manera:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # Salida: {:name=>"Bob", :city=>"Paris"}Los símbolos se prefieren como claves de hash porque son más rápidos de comparar que las cadenas y consumen menos memoria. Verás este patrón en todo el código de Ruby, por lo que vale la pena familiarizarse con él.
Desafío
FácilLee tres líneas de entrada:
- Una marca de coche (string)
- Un nombre de modelo (string)
- Un año (integer)
Crea un hash llamado car utilizando la sintaxis abreviada de símbolos (por ejemplo, key: value) con los siguientes pares clave-valor:
:brandmapeado a la marca del coche:modelmapeado al nombre del modelo:yearmapeado al año (como un entero)
Luego realiza estas operaciones:
- Imprime el valor de la clave
:model - Añade una nueva clave
:colorcon el valor"black" - Actualiza la clave
:yearsumando 1 a su valor actual - Imprime el hash final
Por ejemplo, si las entradas son Toyota, Camry, y 2020, la salida debería ser:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}Si las entradas son Honda, Civic, y 2018, la salida debería ser:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}Si las entradas son Ford, Mustang, y 2023, la salida debería ser:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}Hoja de referencia
Ruby proporciona una sintaxis abreviada para crear hashes con claves de símbolo:
person = {name: "Alice", age: 25, city: "Paris"}Esto es equivalente a usar la sintaxis de "hash rocket" con símbolos:
person = {:name => "Alice", :age => 25, :city => "Paris"}Para acceder a los valores de un hash con claves de símbolo, utiliza corchetes con el símbolo:
puts person[:name] # Salida: Alice
puts person[:age] # Salida: 25Agregar y modificar entradas funciona de la misma manera que con las claves de cadena:
person[:city] = "Paris" # Agregar un nuevo par clave-valor
person[:name] = "Bob" # Modificar el valor existenteSe prefieren los símbolos como claves de hash porque son más rápidos de comparar que las cadenas y utilizan menos memoria.
Pruébalo tú mismo
# Leer entrada
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: Escribe tu código a continuación
# 1. Crea un hash llamado 'car' usando la sintaxis abreviada de símbolos con las claves :brand, :model y :year
# 2. Imprime el valor de la clave :model
# 3. Agrega una nueva clave :color con el valor "black"
# 4. Actualiza la clave :year sumando 1 a su valor actual
# 5. Imprime el hash finalEsta 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ámica11Arrays
Crear arraysAcceder a elementos de un arrayModificar arraysMétodos de arraysResumen - Array de productosResumen - Array invertidoAtajos de arrays14Hashes
Crear HashesAcceder a elementos del HashModificar HashesMétodos de HashResumen - Hash de productosSímbolos como claves de Hash3Operadores 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