Símbolos como Chaves de Hash
Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 78 de 88.
Até agora, você tem usado strings como chaves de hash com a sintaxe hash rocket. No entanto, desenvolvedores Ruby comumente usam símbolos como chaves, o que oferece uma abordagem mais limpa e eficiente.
Lembra-se dos símbolos vistos anteriormente? Eles são identificadores leves e imutáveis que começam com dois-pontos. Ao usar símbolos como chaves, o Ruby fornece uma sintaxe abreviada especial:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # Saída: {:name=>"Alice", :age=>25, :city=>"Paris"}Observe como name: substitui :name =>. Este atalho só funciona quando a chave é um símbolo. Para acessar os valores, use o símbolo com colchetes:
person = {name: "Alice", age: 25}
puts person[:name] # Saída: Alice
puts person[:age] # Saída: 25Adicionar e modificar entradas funciona da mesma forma:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # Saída: {:name=>"Bob", :city=>"Paris"}Símbolos são preferidos como chaves de hash porque são mais rápidos de comparar do que strings e usam menos memória. Você verá esse padrão em todo o código Ruby, então vale a pena se familiarizar com ele.
Desafio
FácilLeia três linhas de entrada:
- Uma marca de carro (string)
- Um nome de modelo (string)
- Um ano (inteiro)
Crie um hash chamado car usando a sintaxe abreviada de símbolos (ex: key: value) com os seguintes pares chave-valor:
:brandmapeado para a marca do carro:modelmapeado para o nome do modelo:yearmapeado para o ano (como um inteiro)
Em seguida, realize estas operações:
- Imprima o valor da chave
:model - Adicione uma nova chave
:colorcom o valor"black" - Atualize a chave
:yearadicionando 1 ao seu valor atual - Imprima o hash final
Por exemplo, se as entradas forem Toyota, Camry, e 2020, a saída deve ser:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}Se as entradas forem Honda, Civic, e 2018, a saída deve ser:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}Se as entradas forem Ford, Mustang, e 2023, a saída deve ser:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}Folha de consulta
Ruby fornece uma sintaxe abreviada para criar hashes com chaves de símbolos:
person = {name: "Alice", age: 25, city: "Paris"}Isso é equivalente a usar a sintaxe hash rocket com símbolos:
person = {:name => "Alice", :age => 25, :city => "Paris"}Para acessar valores de um hash com chaves de símbolos, use colchetes com o símbolo:
puts person[:name] # Saída: Alice
puts person[:age] # Saída: 25Adicionar e modificar entradas funciona da mesma forma que com chaves de string:
person[:city] = "Paris" # Adiciona um novo par chave-valor
person[:name] = "Bob" # Modifica o valor existenteSímbolos são preferidos como chaves de hash porque são mais rápidos de comparar do que strings e usam menos memória.
Experimente você mesmo
# Ler a entrada
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: Escreva seu código abaixo
# 1. Crie um hash chamado 'car' usando a sintaxe abreviada de símbolos com as chaves :brand, :model e :year
# 2. Imprima o valor da chave :model
# 3. Adicione uma nova chave :color com o valor "black"
# 4. Atualize a chave :year adicionando 1 ao seu valor atual
# 5. Imprima o hash finalEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operadores Lógicos Parte 47Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoO Método FizzBuzz2Variáveis e Tipos de Dados
Números e VariáveisTipo de Dado StringTipo de Dado BooleanTipo de Dado SymbolVerificando Tipos de DadosConvenções de NomenclaturaRecapitulação - Criação de Variáveis5Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Calculadora SimplesIf - Else AninhadoInstrução Unless8Laços de Repetição
Loop For com IntervalosLoop WhileBreakNextRecapitulação - FatorialLoop TimesLoop UntilLoops AninhadosRecapitulação - Entrada Dinâmica11Arrays
Criando ArraysAcessando Elementos de um ArrayModificando ArraysMétodos de ArrayRecapitulação - Array de ProdutosRecapitulação - Array InvertidoAtalhos de Array14Hashes
Criando HashesAcessando Elementos de um HashModificando HashesMétodos de HashRecapitulação - Hash de ProdutoSímbolos como Chaves de Hash3Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com putsSaída com print e pSaída com VariáveisEntrada com getsMétodo chompConversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Métodos
Definindo um MétodoParâmetros de MétodoValores de RetornoRecapitulação - Método SigmaRecapitulação - Método de ValidaçãoValores de Parâmetro Padrão15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa