Изменение хэшей
Часть раздела Основы путешествия по 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, не вызывая ошибки.
Задание
ЛегкоПрочитайте четыре строки входных данных:
- Имя студента (строка)
- Начальная оценка (целое число)
- Новая оценка для обновления (целое число)
- Новая пара ключ-значение в формате
key:value(например,subject:Math)
Создайте хеш с именем student со следующими начальными парами ключ-значение:
"name", соответствующее имени студента"grade", соответствующее начальной оценке (как целое число)
Затем выполните следующие модификации:
- Обновите ключ
"grade"новым значением оценки - Добавьте новую пару ключ-значение, используя ключ и значение из четвертой строки ввода (значение должно остаться строкой)
- Удалите ключ
"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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь