0Pricing
Ruby Academy · Урок

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.inspect

map для строк

map может преобразовывать значения любого типа, например переводить слова в верхний регистр.

words = ["red", "green"]
puts words.map { |w| w.upcase }.inspect

Сокращённая запись с символом

Если блок просто вызывает один метод, используйте &:method как сокращённую запись.

words = ["a", "b", "c"]
puts words.map(&:upcase).inspect

map с индексом

Добавьте 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 для преобразования и сокращённая запись &:method
  • select/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 — локальная установка не требуется.

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

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