Menu
Coddy logo textTech

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

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

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

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

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, который позволяет указать значение по умолчанию, если key отсутствует:

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

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

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

challenge icon

Задание

Легко

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

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

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

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

Затем используйте метод 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

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

# Чтение ввода
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
# Используйте точный текст из инструкций в качестве значения по умолчанию, если ключ не существует


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

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

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

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