Menu
Coddy logo textTech

Доступ к элементам хэша

Часть раздела Основы путешествия по Ruby на Coddy — урок 74 из 88.

Теперь, когда вы знаете, как создавать хеши, вам нужно извлечь хранящиеся в них значения. В отличие от массивов, где вы используете числовые индексы, хеши используют ключи для доступа к своим значениям.

Поместите ключ в квадратные скобки, чтобы получить соответствующее ему значение:

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

puts person["name"]  # Выводит: Alice
puts person["age"]   # Выводит: 25

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

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

puts person["country"]  # Выводит: (ничего - nil)

Вы также можете использовать метод fetch, который позволяет указать значение по умолчанию, если ключ отсутствует:

person = {"name" => "Alice"}

puts person.fetch("name", "Unknown")     # Выводит: Alice
puts person.fetch("country", "Unknown")  # Выводит: Unknown

Это полезно, когда вы хотите корректно обрабатывать отсутствующие ключи вместо получения nil.

challenge icon

Задание

Легко

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

  1. Название продукта (строка)
  2. Цена (число с плавающей точкой)
  3. Количество на складе (целое число)
  4. Ключ для поиска (строка)

Создайте хеш с именем product со следующими парами ключ-значение:

  • "name" соответствует названию продукта
  • "price" соответствует цене (как float)
  • "stock" соответствует количеству (как integer)

Затем используйте метод fetch, чтобы извлечь значение для ключа, указанного в четвертой строке ввода. Если ключ не существует, используйте "Not found" в качестве значения по умолчанию. Выведите результат.

Например, если входные данные: Laptop, 999.99, 15 и price, результат должен быть:

999.99

Если входные данные: Keyboard, 49.99, 100 и name, результат должен быть:

Keyboard

Если входные данные: Mouse, 29.99, 50 и color, результат должен быть:

Not found

Если входные данные: Monitor, 299.0, 8 и stock, результат должен быть:

8

Шпаргалка

Для доступа к значениям в хеше используйте ключ внутри квадратных скобок:

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

puts person["name"]  # Выводит: Alice
puts person["age"]   # Выводит: 25

Если ключ не существует, Ruby возвращает nil:

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

puts person["country"]  # Выводит: (ничего - nil)

Используйте метод fetch, чтобы указать значение по умолчанию для отсутствующих ключей:

person = {"name" => "Alice"}

puts person.fetch("name", "Unknown")     # Выводит: Alice
puts person.fetch("country", "Unknown")  # Выводит: Unknown

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

# Чтение входных данных
product_name = gets.chomp
price = gets.chomp.to_f
quantity = gets.chomp.to_i
key_to_lookup = gets.chomp

# TODO: Напишите свой код ниже
# Создайте хеш под названием 'product' с ключами "name", "price" и "stock"
# Затем используйте метод fetch для получения значения для key_to_lookup
# Используйте "Not found" в качестве значения по умолчанию, если ключ не существует


# Вывод результата
puts result
quiz iconПроверьте себя

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

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