0Pricing
Swift Academy · Урок

Операторы: map, filter, combineLatest

Преобразуйте и объединяйте потоки издателей с помощью операторов Combine.

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

Добро пожаловать

Операторы Combine преобразуют, фильтруют и объединяют потоки издателей. В конвейере они находятся между издателем и подписчиком.

map

```swift [1,2,3].publisher .map { $0 * 2 } .sink { print($0) } // 2, 4, 6 ```

filter

```swift (1...10).publisher .filter { $0 % 2 == 0 } .sink { print($0) } // 2,4,6,8,10 ```

compactMap

```swift ["1","two","3"].publisher .compactMap { Int($0) } .sink { print($0) } // 1, 3 ```

combineLatest

```swift let usernamePublisher = usernameField.textPublisher let passwordPublisher = passwordField.textPublisher usernamePublisher .combineLatest(passwordPublisher) .map { !$0.isEmpty && $1.count >= 8 } .assign(to: &loginButton.$isEnabled) ```

merge

```swift merge(upstream1, upstream2) .sink { print($0) } // interleaved values from both ```

zip

```swift zip(publisher1, publisher2) .sink { print($0, $1) } // pairs values one-to-one ```

flatMap

```swift urls.publisher .flatMap { url in URLSession.shared.dataTaskPublisher(for: url).map(\.data) } .sink { data in ... } ```

debounce

```swift searchTextField.textPublisher .debounce(for: 0.3, scheduler: RunLoop.main) .removeDuplicates() .sink { self.search($0) } .store(in: &cancellables) ```

receive(on:)

```swift networkPublisher .receive(on: DispatchQueue.main) .sink { self.updateUI($0) } ```

Быстрая проверка

Какой оператор Combine выдаёт значение только после того, как все вышестоящие издатели выдали новые значения?

Итоги

Основные выводы: • `map`, `filter`, `compactMap` — преобразуют элементы потока • `combineLatest` — последние значения обоих издателей; `zip` — попарно сопоставляет значения • `flatMap` — объединяет внутренние асинхронные издатели в один поток • `debounce` — ждёт паузу перед выдачей значения • `receive(on:)` — переключает планировщик для работы с интерфейсом Далее: субъекты.

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

Урок «Операторы: map, filter, combineLatest» бесплатный?

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

Чему я научусь в уроке «Операторы: map, filter, combineLatest»?

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

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

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

Сколько времени занимает урок «Операторы: map, filter, combineLatest»?

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

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

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

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

  1. Издатели и подписчики
  2. Операторы: map, filter, combineLatest
  3. PassthroughSubject и CurrentValueSubject
  4. Сетевое взаимодействие с Combine и URLSession
← Назад к Swift Academy