Символы как ключи хэша
Часть раздела Основы путешествия по Ruby на Coddy. Урок 78 из 88.
До сих пор ты использовал строки в качестве ключей хеша с синтаксисом стрелки хеша. Однако разработчики Ruby обычно вместо этого используют символы в качестве ключей — это более лаконичный и эффективный подход.
Помнишь символы из предыдущих уроков? Это лёгкие неизменяемые идентификаторы, которые начинаются с двоеточия. При использовании символов в качестве ключей Ruby предоставляет специальный сокращённый синтаксис:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # Выводит: {:name=>"Alice", :age=>25, :city=>"Paris"}Обратите внимание, как name: заменяет :name =>. Эта краткая запись работает только тогда, когда ключ — это символ. Чтобы получить доступ к значениям, используйте символ в квадратных скобках:
person = {name: "Alice", age: 25}
puts person[:name] # Выводит: Alice
puts person[:age] # Выводит: 25Добавление и изменение записей работает одинаково:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # Выводит: {:name=>"Bob", :city=>"Paris"}Символы предпочтительнее в качестве ключей хеша, потому что их сравнивать быстрее, чем строки, и они занимают меньше памяти. Вы будете встречать этот шаблон в коде Ruby повсюду, поэтому стоит к нему привыкнуть.
Задание
ЛегкоСчитай три строки входных данных:
- Марка автомобиля (строка)
- Название модели (строка)
- Год выпуска (целое число)
Создай хеш с именем car, используя сокращённый синтаксис записи символов (например, key: value), со следующими парами «ключ-значение»:
:brandсоответствует марке автомобиля:modelсоответствует названию модели:yearсоответствует году выпуска (как целому числу)
Затем выполни следующие действия:
- Выведи значение ключа
:model - Добавь новый ключ
:colorсо значением"black" - Обнови ключ
:year, прибавив 1 к его текущему значению - Выведи итоговый хеш
Например, если входные данные — Toyota, Camry и 2020, результат должен быть таким:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}Если входные данные — Honda, Civic и 2018, результат должен быть таким:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}Если входные данные — Ford, Mustang и 2023, результат должен быть таким:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}Попробуйте сами
# Считайте входные данные
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: Напишите код ниже
# 1. Создайте хеш 'car', используя сокращённый синтаксис символов с ключами :brand, :model и :year
# 2. Выведите значение ключа :model
# 3. Добавьте новый ключ :color со значением "black"
# 4. Обновите значение ключа :year, прибавив к нему 1
# 5. Выведите итоговый хешВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод11Массивы
Создание массивовДоступ к элементам массиваИзменение массивовМетоды массивовПовторение — Массив произведенийПовторение — Перевернутый массивСокращенная запись для массивов14Хэши
Создание хэшейДоступ к элементам хэшаИзменение хэшейМетоды хэшейИтоги — Хэш продуктаСимволы как ключи хэша3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложьПотренируйтесь самостоятельно: Онлайн-компилятор Ruby