0Pricing
SwiftUI Academy · Урок

Преобразование с map и filter

Изменяйте значения по мере их передачи дальше по потоку.

«Преобразование с map и filter» — бесплатный урок SwiftUI Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SwiftUI Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SwiftUI Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Operators Reshape Streams

Between a publisher and its subscriber you can insert operators that transform values as they flow downstream.

map Transforms Each Value

The map operator runs a closure on every value and emits the result, changing the stream's shape.

[1, 2, 3].publisher
    .map { $0 * 10 }

map Can Change the Type

Because map returns whatever you want, the Output type can change, like turning numbers into strings.

[1, 2].publisher
    .map { "Item \($0)" }

filter Drops Values

The filter operator keeps only the values whose closure returns true and silently discards the rest.

[1, 2, 3, 4].publisher
    .filter { $0 % 2 == 0 }

Chaining Operators

Operators compose cleanly: chain filter then map to first narrow the stream, then reshape it.

.filter { $0 > 0 }
.map { $0 * 2 }

Order Matters

Each operator sees only the output of the one above it, so reordering map and filter can quietly change your result.

compactMap Removes nil

Use compactMap when your transform may return nil, and Combine drops those empty results for you.

["1", "x", "3"].publisher
    .compactMap { Int($0) }

removeDuplicates

The removeDuplicates operator emits a value only when it differs from the previous one.

subject.removeDuplicates()

scan Accumulates

The scan operator carries a running result, emitting an updated total for every value, like a live sum.

.scan(0) { total, next in total + next }

Readable Pipelines

Reading top to bottom, a pipeline tells a story: this is where the declarative power of operators shines.

.filter { !$0.isEmpty }
.map { $0.uppercased() }

Pure Transforms

Keep operator closures pure: avoid side effects so each value transforms predictably and tests stay simple.

Quick Check

A stream emits 1, 2, 3, 4. After .filter { $0 % 2 == 0 }.map { $0 * 10 }, what is emitted?

Recap: Shaping the Flow

You learned to reshape streams: map transforms, filter narrows, and compactMap clears out nil values. ✨

Часто задаваемые вопросы

Урок «Преобразование с map и filter» бесплатный?

Да — полный текст урока «Преобразование с map и filter» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SwiftUI Academy, подпишись на CoddyKit PRO. Курс SwiftUI Academy содержит 4 уроков всего.

Чему я научусь в уроке «Преобразование с map и filter»?

Изменяйте значения по мере их передачи дальше по потоку. Ты практикуешь SwiftUI Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SwiftUI Academy?

Предыдущий опыт не требуется. SwiftUI Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Преобразование с map и filter»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SwiftUI Academy?

Да. Каждый урок SwiftUI Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Издатели и подписчики
  2. Преобразование с map и filter
  3. Debounce для живого поиска
  4. Связывание Combine со SwiftUI
← Назад к SwiftUI Academy