Menu
Coddy logo textTech

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: 25

Se você tentar excluir uma chave que não existe, o Ruby simplesmente retorna nil sem gerar um erro.

challenge icon

Desafio

Fácil

Leia quatro linhas de entrada:

  1. Um nome de aluno (string)
  2. Uma nota inicial (inteiro)
  3. Uma nova nota para atualizar (inteiro)
  4. 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:

  1. Atualize a chave "grade" com o novo valor da nota
  2. Adicione um novo par chave-valor usando a chave e o valor da quarta entrada (o valor deve permanecer como uma string)
  3. 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: 25

Se 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 student
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos