0Pricing
Ruby Academy · Урок

Модуль 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.inspect

sum

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, sum
  • sort/sort_by, any?/all?/none?
  • find, first/take/drop
  • group_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 — локальная установка не требуется.

Все уроки этого курса

  1. Создание диапазонов
  2. Модуль Enumerable
  3. map, select, reject
  4. reduce и each_with_object
← Назад к Ruby Academy