Модуль Enumerable
Общие возможности коллекций
«Модуль Enumerable» — бесплатный урок Ruby Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Что такое модуль перечисления
Модуль перечисления предоставляет таким коллекциям, как массивы, хеши и диапазоны, общий набор мощных методов. Его можно подключить к любому классу, в котором есть each.
puts [1, 2, 3].is_a?(Enumerable)
puts (1..3).is_a?(Enumerable)include? и проверка принадлежности
include? проверяет, содержит ли коллекция определённое значение.
nums = [10, 20, 30]
puts nums.include?(20)
puts (1..5).include?(3)Подсчёт
count возвращает размер коллекции, а с блоком подсчитывает подходящие элементы.
nums = [1, 2, 3, 4]
puts nums.count
puts nums.count { |n| n.even? }min, max и minmax
Находите крайние значения с помощью min, max или оба сразу с помощью minmax.
nums = [4, 1, 7, 3]
puts nums.min
puts nums.max
puts nums.minmax.inspectsum
sum складывает все элементы. Можно передать начальное значение.
puts [1, 2, 3].sum
puts [1, 2, 3].sum(100)Сортировка и sort_by
sort упорядочивает элементы, а sort_by — по вычисляемому ключу.
words = ["pear", "a", "fig"]
puts words.sort.inspect
puts words.sort_by { |w| w.length }.inspectПроверка наличия и соответствия всех элементов
any? возвращает истину, если подходит хотя бы один элемент; all? возвращает истину, только если подходят все элементы.
nums = [2, 4, 6]
puts nums.all? { |n| n.even? }
puts nums.any? { |n| n > 5 }Проверка отсутствия и поиск
none? возвращает истину, если ничего не подходит. find (псевдоним detect) возвращает первый подходящий элемент.
nums = [1, 3, 5]
puts nums.none? { |n| n.even? }
puts nums.find { |n| n > 2 }first и получение элементов
first получает первый элемент или несколько первых элементов; take берёт указанное количество элементов с начала, а drop пропускает их.
nums = [10, 20, 30, 40]
puts nums.first(2).inspect
puts nums.drop(2).inspectГруппировка
group_by создаёт хеш, распределяя элементы по результату блока.
nums = [1, 2, 3, 4, 5]
groups = nums.group_by { |n| n.even? ? :even : :odd }
puts groupsПеребор с индексом
each_with_index передаёт и элемент, и его позицию.
%w[a b c].each_with_index do |item, i|
puts "#{i}: #{item}"
endБыстрая проверка
Проверьте свои знания о модуле перечисления.
Повторение
Модуль перечисления значительно расширяет возможности коллекций:
include?,count,min/max,sumsort/sort_by,any?/all?/none?find,first/take/dropgroup_by,each_with_index
Далее: подробное изучение map, select и отклонения элементов.
puts [3, 1, 2].sort.inspectЧасто задаваемые вопросы
Урок «Модуль Enumerable» бесплатный?
Да — полный текст урока «Модуль Enumerable» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Модуль Enumerable»?
Общие возможности коллекций Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Модуль Enumerable»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание диапазонов
- Модуль Enumerable
- map, select, reject
- reduce и each_with_object