Итерация по хешу
each, map, select
«Итерация по хешу» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Перебор с помощью each
Метод each посещает каждую пару. Блок получает ключ и значение.
scores = { math: 90, art: 80 }
scores.each do |subject, score|
puts "#{subject}: #{score}"
endeach_pair
each_pair — это псевдоним each для хешей. Используйте тот вариант, который лучше читается.
h = { a: 1, b: 2 }
h.each_pair { |k, v| puts "#{k}=#{v}" }Перебор только ключей
each_key перебирает ключи, когда значения не нужны.
h = { name: "Ada", age: 36 }
h.each_key { |k| puts k }Перебор только значений
each_value напрямую перебирает значения.
h = { a: 10, b: 20 }
total = 0
h.each_value { |v| total += v }
puts totalПреобразование с помощью map
map для хеша возвращает массив. Каждая пара передаётся как ключ и значение.
prices = { pen: 2, book: 5 }
labels = prices.map { |item, p| "#{item}: $#{p}" }
puts labels.inspecttransform_values
transform_values возвращает новый хеш, в котором изменены значения, а ключи сохранены.
prices = { pen: 2, book: 5 }
doubled = prices.transform_values { |p| p * 2 }
puts doubledtransform_keys
transform_keys изменяет ключи, сохраняя значения. Это удобно для преобразования строк в символы.
h = { "a" => 1, "b" => 2 }
puts h.transform_keys(&:to_sym)Фильтрация с помощью select
select (псевдоним filter) сохраняет пары, для которых блок возвращает true, и возвращает новый хеш.
scores = { a: 90, b: 50, c: 70 }
passing = scores.select { |k, v| v >= 70 }
puts passingОтклонение пар
reject действует противоположно select. Он удаляет пары, для которых блок возвращает true.
scores = { a: 90, b: 50 }
puts scores.reject { |k, v| v < 60 }Поиск и подсчёт
find возвращает первую подходящую пару в виде массива. count с блоком подсчитывает совпадения.
h = { a: 1, b: 2, c: 3 }
puts h.find { |k, v| v == 2 }.inspect
puts h.count { |k, v| v.odd? }Суммирование значений
Объедините values с sum, чтобы получить итоговую сумму, или используйте each_with_object для пользовательской агрегации.
cart = { apple: 3, pear: 5 }
puts cart.values.sumБыстрая проверка
Проверьте свои знания о переборе хешей.
Итоги
Теперь Вы умеете перебирать хеши:
each,each_key,each_valuemap,transform_values,transform_keysselect/rejectдля фильтрацииfind,countи суммирование значений
Далее: значения по умолчанию и объединение хешей.
h = { a: 1, b: 2, c: 3 }
puts h.select { |k, v| v.odd? }Часто задаваемые вопросы
Урок «Итерация по хешу» бесплатный?
Да — полный текст урока «Итерация по хешу» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Итерация по хешу»?
each, map, select Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Итерация по хешу»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.