Modificando Hashes
Parte da seção Fundamentos do Journey de Ruby da Coddy. Lição 75 de 88.
Os hashes não são estáticos depois de criados. Você pode adicionar novos pares de chave e valor, atualizar valores existentes e remover entradas enquanto seu programa é executado.
Para adicionar um novo par ou atualizar um valor existente, atribua um valor à chave usando colchetes:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Adiciona um novo par chave-valor
person["age"] = 26 # Atualiza o valor existente
puts person # Exibe: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Se a chave existir, o valor será substituído. Se ela não existir, um novo par será adicionado ao hash.
Para remover um par chave-valor, use o método delete com a chave que você deseja remover:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Exibe: {"name"=>"Alice", "age"=>25}O método delete retorna o valor que foi removido, o que pode ser útil se você precisar usá-lo:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # Exibe: 25Se você tentar excluir uma chave que não existe, Ruby simplesmente retorna nil sem gerar um erro.
Desafio
FácilLeia quatro linhas de entrada:
- Um nome de estudante (string)
- Uma nota inicial (inteiro)
- Uma nova nota para atualizar (inteiro)
- Um novo par chave-valor no formato
key:value(por exemplo,subject:Math)
Crie um hash chamado student com os seguintes pares chave-valor iniciais:
"name"associado ao nome do estudante"grade"associado à nota inicial (como um inteiro)
Em seguida, faça estas modificações:
- Atualize a chave
"grade"com o novo valor da nota - Adicione um novo par chave-valor usando a chave e o valor da quarta entrada (o valor deve permanecer uma string)
- Exclua a chave
"name"do hash e armazene o valor removido
Imprima o nome removido na primeira linha e, em seguida, imprima o hash final na segunda linha.
Por exemplo, se as entradas forem Alice, 85, 92 e subject:Math, a saída deverá ser:
Alice
{"grade"=>92, "subject"=>"Math"}Se as entradas forem Bob, 70, 75 e status:passing, a saída deverá ser:
Bob
{"grade"=>75, "status"=>"passing"}Se as entradas forem Charlie, 100, 95 e note:excellent, a saída deverá ser:
Charlie
{"grade"=>95, "note"=>"excellent"}Experimente você mesmo
# Leia a entrada
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# TODO: Escreva seu código abaixo
# 1. Crie um hash chamado 'student' com as chaves "name" e "grade"
# 2. Atualize a chave "grade" com o novo valor da nota
# 3. Analise o key_value_pair e adicione-o ao hash
# 4. Exclua a chave "name" e armazene o valor removido
# Exiba o nome removido
puts removed_name
# Exiba o hash final
puts studentEsta 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âmica3Operadores 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 ProgramaPratique por conta própria: Compilador de Ruby online