Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по 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"}

Шпаргалка

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

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

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

puts person  # Outputs: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}

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

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

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

person.delete("city")

puts person  # Outputs: {"name"=>"Alice", "age"=>25}

Метод delete возвращает удаленное значение:

removed_age = person.delete("age")

puts removed_age  # Outputs: 25

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

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

# Чтение входных данных
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Проверьте себя

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

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