map, select, reject
Преобразуйте и фильтруйте
«map, select, reject» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Преобразование с помощью map
map создаёт новый массив, выполняя блок для каждого элемента. Исходный массив не изменяется.
nums = [1, 2, 3]
doubled = nums.map { |n| n * 2 }
puts doubled.inspect
puts nums.inspectmap для строк
map может преобразовывать значения любого типа, например переводить слова в верхний регистр.
words = ["red", "green"]
puts words.map { |w| w.upcase }.inspectСокращённая запись с символом
Если блок просто вызывает один метод, используйте &:method как сокращённую запись.
words = ["a", "b", "c"]
puts words.map(&:upcase).inspectmap с индексом
Добавьте with_index в цепочку, если Вам также нужны позиции элементов.
letters = %w[a b c]
result = letters.map.with_index { |l, i| "#{i}:#{l}" }
puts result.inspectФильтрация с помощью select
select (псевдоним filter) сохраняет только те элементы, для которых блок возвращает истину.
nums = [1, 2, 3, 4, 5, 6]
evens = nums.select { |n| n.even? }
puts evens.inspectФильтрация строк
select работает с любым условием, например позволяет оставить длинные слова.
words = ["hi", "hello", "hey", "welcome"]
puts words.select { |w| w.length > 3 }.inspectУдаление с помощью отклонения
reject работает противоположно select. Он удаляет элементы, для которых блок возвращает истину.
nums = [1, 2, 3, 4]
puts nums.reject { |n| n.even? }.inspectОбъединение map и select в цепочку
Поскольку каждый метод возвращает новый массив, методы можно объединять в цепочку обработки.
nums = [1, 2, 3, 4, 5]
result = nums.select { |n| n.odd? }.map { |n| n * 10 }
puts result.inspectФильтрация и преобразование
filter_map объединяет фильтрацию и преобразование за один проход: он сохраняет результаты блока, не равные false.
nums = [1, 2, 3, 4]
result = nums.filter_map { |n| n * 2 if n.even? }
puts result.inspectПреобразование с выравниванием
flat_map преобразует элементы, а затем выравнивает один уровень вложенных массивов.
pairs = [[1, 2], [3, 4]]
puts pairs.flat_map { |p| p }.inspectРазбиение
partition разделяет коллекцию на два массива: подходящие и неподходящие элементы.
nums = [1, 2, 3, 4, 5]
evens, odds = nums.partition { |n| n.even? }
puts evens.inspect
puts odds.inspectБыстрая проверка
Проверьте свои знания о преобразовании и фильтрации.
Повторение
Вы освоили преобразование и фильтрацию:
mapдля преобразования и сокращённая запись&:methodselect/filterиreject- объединение методов в цепочку,
filter_map,flat_map,partition
Далее: reduce и each_with_object для агрегирования.
puts [1, 2, 3, 4].select(&:even?).map { |n| n * n }.inspectЧасто задаваемые вопросы
Урок «map, select, reject» бесплатный?
Да — полный текст урока «map, select, reject» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «map, select, reject»?
Преобразуйте и фильтруйте Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «map, select, reject»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание диапазонов
- Модуль Enumerable
- map, select, reject
- reduce и each_with_object