Modificando Hashes
Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 75 de 88.
Hashes não são estáticos depois de criados. Você pode adicionar novos pares chave-valor, atualizar valores existentes e remover entradas conforme seu programa é executado.
Para adicionar um novo par ou atualizar um valor existente, atribua à 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 # Saída: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Se a chave existir, o valor é substituído. Se não existir, um novo par é 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 # Saída: {"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 # Saída: 25Se você tentar excluir uma chave que não existe, o Ruby simplesmente retorna nil sem gerar um erro.
Desafio
FácilLeia quatro linhas de entrada:
- Um nome de aluno (string)
- Uma nota inicial (inteiro)
- Uma nova nota para atualizar (inteiro)
- Um novo par chave-valor no formato
key:value(ex:subject:Math)
Crie um hash chamado student com os seguintes pares chave-valor iniciais:
"name"mapeado para o nome do aluno"grade"mapeado para a nota inicial (como um inteiro)
Em seguida, realize 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 como 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 deve ser:
Alice
{"grade"=>92, "subject"=>"Math"}Se as entradas forem Bob, 70, 75 e status:passing, a saída deve ser:
Bob
{"grade"=>75, "status"=>"passing"}Se as entradas forem Charlie, 100, 95 e note:excellent, a saída deve ser:
Charlie
{"grade"=>95, "note"=>"excellent"}Folha de consulta
Para adicionar um novo par chave-valor ou atualizar um valor existente em um hash, use colchetes:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Adiciona um novo par chave-valor
person["age"] = 26 # Atualiza o valor existente
puts person # Saída: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Se a chave existir, o valor será substituído. Se não existir, um novo par será adicionado.
Para remover um par chave-valor, use o método delete:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Saída: {"name"=>"Alice", "age"=>25}O método delete retorna o valor removido:
removed_age = person.delete("age")
puts removed_age # Saída: 25Se você tentar excluir uma chave que não existe, o Ruby retornará nil sem gerar um erro.
Experimente você mesmo
# Ler 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 de nota
# 3. Analise o key_value_pair e adicione-o ao hash
# 4. Exclua a chave "name" e armazene o valor removido
# Exibir o nome removido
puts removed_name
# Exibir 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 Programa