Menu
CoddyTech

Символы как ключи хэша

Часть раздела Основы путешествия по 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 повсюду, поэтому стоит к нему привыкнуть.

challenge icon

Задание

Легко

Считай три строки входных данных:

  1. Марка автомобиля (строка)
  2. Название модели (строка)
  3. Год выпуска (целое число)

Создай хеш с именем car, используя сокращённый синтаксис записи символов (например, key: value), со следующими парами «ключ-значение»:

  • :brand соответствует марке автомобиля
  • :model соответствует названию модели
  • :year соответствует году выпуска (как целому числу)

Затем выполни следующие действия:

  1. Выведи значение ключа :model
  2. Добавь новый ключ :color со значением "black"
  3. Обнови ключ :year, прибавив 1 к его текущему значению
  4. Выведи итоговый хеш

Например, если входные данные — 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. Выведите итоговый хеш
quiz iconПроверьте себя

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

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

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