Menu
Coddy logo textTech

Методы хэшей

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

Ruby предоставляет несколько встроенных методов, которые помогают более эффективно проверять и работать с хешами. Эти методы обеспечивают быстрый доступ к информации о содержимом вашего хеша.

Метод keys возвращает массив всех ключей в хеше:

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

puts person.keys  # Выводит: name, age, city

Аналогично, метод values возвращает массив всех значений:

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

puts person.values  # Выводит: Alice, 25, Paris

Чтобы проверить, существует ли определенный ключ, используйте key? или его псевдоним has_key?:

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

puts person.key?("name")     # Выводит: true
puts person.key?("country")  # Выводит: false

Метод length сообщает вам, сколько пар ключ-значение содержит хеш:

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

puts person.length  # Выводит: 3

Наконец, empty? проверяет, есть ли в хеше вообще какие-либо пары:

data = {}
puts data.empty?  # Выводит: true
challenge icon

Задание

Легко

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

  1. Хэш, представленный в виде пар ключ-значение, разделенных запятыми, в формате key:value (например, name:Alice,age:25,city:Paris)
  2. Ключ для проверки на существование (строка)

Преобразуйте первый ввод для создания хэша, затем используйте изученные методы хэша, чтобы вывести следующую информацию, каждую на новой строке:

  1. Выведите каждый ключ в хэше (по одному на строку)
  2. Выведите --- в качестве разделителя
  3. Выведите каждое значение в хэше (по одному на строку)
  4. Выведите --- в качестве разделителя
  5. Выведите количество пар ключ-значение в хэше
  6. Выведите --- в качестве разделителя
  7. Выведите true или false, указывающее, является ли хэш пустым
  8. Выведите --- в качестве разделителя
  9. Выведите true или false, указывающее, существует ли ключ из второго ввода в хэше

Например, если входные данные — name:Alice,age:25,city:Paris и age, вывод должен быть следующим:

name
age
city
---
Alice
25
Paris
---
3
---
false
---
true

Если входные данные — product:Laptop,price:999 и stock, вывод должен быть следующим:

product
price
---
Laptop
999
---
2
---
false
---
false

Если входные данные — status:active и status, вывод должен быть следующим:

status
---
active
---
1
---
false
---
true

Шпаргалка

Ruby предоставляет встроенные методы для проверки и работы с хешами:

Метод keys возвращает массив всех ключей:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.keys  # Выводит: name, age, city

Метод values возвращает массив всех значений:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.values  # Выводит: Alice, 25, Paris

Метод key? (или его псевдоним has_key?) проверяет, существует ли определенный ключ:

person = {"name" => "Alice", "age" => 25}
puts person.key?("name")     # Выводит: true
puts person.key?("country")  # Выводит: false

Метод length возвращает количество пар ключ-значение:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.length  # Выводит: 3

Метод empty? проверяет, пуст ли хеш:

data = {}
puts data.empty?  # Выводит: true

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

# Чтение входных данных
input_string = gets.chomp
key_to_check = gets.chomp

# Разбор входной строки для создания хеша
hash = {}
input_string.split(',').each do |pair|
  key, value = pair.split(':')
  hash[key] = value
end

# TODO: Напишите свой код ниже
# Используйте методы хеша, чтобы:
# 1. Вывести каждый ключ (по одному на строку)
# 2. Вывести "---" в качестве разделителя
# 3. Вывести каждое значение (по одному на строку)
# 4. Вывести "---" в качестве разделителя
# 5. Вывести количество пар ключ-значение
# 6. Вывести "---" в качестве разделителя
# 7. Вывести true/false, если хеш пуст
# 8. Вывести "---" в качестве разделителя
# 9. Вывести true/false, если key_to_check существует в хеше
quiz iconПроверьте себя

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

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