Menu
CoddyTech

Изменение хэшей

Часть раздела Основы путешествия по Ruby на Coddy. Урок 75 из 88.

Хеши не остаются неизменными после создания. По мере выполнения программы можно добавлять новые пары «ключ-значение», обновлять существующие значения и удалять записи.

Чтобы добавить новую пару или обновить существующее значение, присвойте значение ключу, используя квадратные скобки:

person = {"name" => "Alice", "age" => 25}

person["city"] = "Paris"      # Добавляет новую пару «ключ — значение»
person["age"] = 26            # Обновляет существующее значение

puts person  # Выводит: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}

Если ключ существует, значение заменяется. Если его не существует, в хеш добавляется новая пара.

Чтобы удалить пару «ключ-значение», используйте метод delete с ключом, который хотите удалить:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}

person.delete("city")

puts person  # Выводит: {"name"=>"Alice", "age"=>25}

Метод delete возвращает удалённое значение, что может быть полезно, если вам нужно его использовать:

person = {"name" => "Alice", "age" => 25}

removed_age = person.delete("age")

puts removed_age  # Выводит: 25

Если попытаться удалить несуществующий ключ, Ruby просто вернёт nil, не вызвав ошибку.

challenge icon

Задание

Легко

Прочитайте четыре строки ввода:

  1. Имя студента (строка)
  2. Исходная оценка (целое число)
  3. Новая оценка для обновления (целое число)
  4. Новая пара «ключ-значение» в формате key:value (например, subject:Math)

Создайте хэш с именем student со следующими исходными парами «ключ-значение»:

  • "name" соответствует имени студента
  • "grade" соответствует исходной оценке (как целому числу)

Затем внесите следующие изменения:

  1. Обновите ключ "grade", указав новое значение оценки
  2. Добавьте новую пару «ключ-значение», используя ключ и значение из четвёртой строки ввода (значение должно остаться строкой)
  3. Удалите ключ "name" из хэша и сохраните удалённое значение

Выведите удалённое имя в первой строке, а затем выведите итоговый хэш во второй строке.

Например, если входные данные — Alice, 85, 92 и subject:Math, вывод должен быть таким:

Alice
{"grade"=>92, "subject"=>"Math"}

Если входные данные — Bob, 70, 75 и status:passing, вывод должен быть таким:

Bob
{"grade"=>75, "status"=>"passing"}

Если входные данные — Charlie, 100, 95 и note:excellent, вывод должен быть таким:

Charlie
{"grade"=>95, "note"=>"excellent"}

Попробуйте сами

# Считайте входные данные
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp

# TODO: Напишите свой код ниже
# 1. Создайте хеш с именем 'student' и ключами "name" и "grade"
# 2. Обновите значение ключа "grade", указав новую оценку
# 3. Разберите key_value_pair и добавьте полученную пару в хеш
# 4. Удалите ключ "name" и сохраните удалённое значение

# Выведите удалённое имя
puts removed_name
# Выведите итоговый хеш
puts student
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby