Символы как ключи хэша
Часть раздела Основы путешествия по Ruby на Coddy — урок 78 из 88.
До сих пор вы использовали строки в качестве ключей хеша с синтаксисом hash rocket. Однако 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"}Шпаргалка
Ruby предоставляет сокращенный синтаксис для создания хешей с ключами-символами:
person = {name: "Alice", age: 25, city: "Paris"}Это эквивалентно использованию синтаксиса "hash rocket" с символами:
person = {:name => "Alice", :age => 25, :city => "Paris"}Чтобы получить доступ к значениям хеша с ключами-символами, используйте квадратные скобки с символом:
puts person[:name] # Выводит: Alice
puts person[:age] # Выводит: 25Добавление и изменение записей работает так же, как и с ключами-строками:
person[:city] = "Paris" # Добавить новую пару ключ-значение
person[:name] = "Bob" # Изменить существующее значениеСимволы предпочтительнее в качестве ключей хеша, потому что они сравниваются быстрее, чем строки, и используют меньше памяти.
Попробуйте сами
# Чтение входных данных
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Преобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь