Swift Academy · Ders

Akışları Dönüştürme ve Birleştirme

flatMap, merge, combineLatest ve zip kullanın.

1. ders / 413 adım

Akışları Dönüştürme ve Birleştirme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Akışlarla Çalışma

Birleştirme içinde bir yayımlayıcı, zaman içinde bir değer akışı yayımlar. Asıl güç, bu akışları dönüştürüp yenilerini oluşturmak ve birleştirmek için kullanılan işleçlerden gelir.

Bu derste en önemli dönüştürme ve birleştirme işleçleri ele alınır: flatMap, merge, combineLatest ve zip.

map ve flatMap

map, her değeri başka bir değere dönüştürür. flatMap ise bir adım daha ileri gider: her değeri yeni bir yayımlayıcıya dönüştürür ve sonuçları tek bir akışta düzleştirir.

Her girdinin başka bir eşzamansız işlemi tetiklemesi gerektiğinde flatMap kullanın.

flatMap Uygulamada

Burada kullanıcı kimliklerinden oluşan bir akış, ağ isteklerinden oluşan bir akışa eşlenir ve tek bir kullanıcı akışında düzleştirilir.

userIdPublisher
    .flatMap { id in
        apiClient.fetchUser(id: id)
    }
    .sink { user in
        print("Loaded", user.name)
    }
    .store(in: &cancellables)

flatMap Eşzamanlılığını Denetleme

Varsayılan olarak flatMap, tüm iç yayımlayıcılara aynı anda abone olur. Bir sunucuyu istek yağmuruna tutmamak için eşzamanlılığı maxPublishers ile sınırlayabilirsiniz.

idsPublisher
    .flatMap(maxPublishers: .max(2)) { id in
        apiClient.fetchUser(id: id)
    }
    .sink { print($0) }
    .store(in: &cancellables)

merge

merge, aynı türdeki birden çok yayımlayıcıdan gelen değerleri tek bir akışta iç içe geçirir ve her değeri gelir gelmez yayımlar.

let combined = buttonTapA
    .merge(with: buttonTapB)

combined
    .sink { print("A tap from either button") }
    .store(in: &cancellables)

combineLatest

combineLatest, herhangi bir girdi yayımlayıcı değer yayımladığında tetiklenir ve her birinin en yeni değerini eşleştirir. Birden çok alanın birlikte değerlendirilmesi gereken form doğrulaması için idealdir.

usernamePublisher
    .combineLatest(passwordPublisher)
    .map { name, pass in
        !name.isEmpty && pass.count >= 8
    }
    .sink { isValid in
        print("Form valid:", isValid)
    }
    .store(in: &cancellables)

combineLatest Davranışı

Not: combineLatest, her girdi en az bir değer üretinceye kadar hiçbir şey yayımlamaz. Bundan sonra herhangi bir girdiden gelen her yeni yayımla, diğer girdilerin en son değerleriyle birleştirilmiş çıktıyı tetikler.

zip

zip, değerleri dizinlerine göre eşleştirir: A'nın ilki B'nin ilkiyle, ikincisi ikincisiyle ve bu şekilde devam eder. Her konumda iki tarafın da bir değere sahip olmasını bekler.

let names = ["Ann", "Bob", "Cy"].publisher
let ages = [30, 25, 41].publisher

names
    .zip(ages)
    .sink { name, age in
        print(name, "is", age)
    }
    .store(in: &cancellables)

combineLatest ve zip

Bu ikisini karıştırmak kolaydır:

  • combineLatest — herhangi bir yayımla tetiklenir, her birinin en yeni değerini kullanır
  • zip — yalnızca dizine göre eşleşen çiftlerde tetiklenir

Canlı durum için combineLatest, paralel sonuçları bire bir hizalamak için zip kullanın.

Paralel İşler İçin Birleştirme

zip, bağımsız istekleri paralel olarak çalıştırıp hepsini beklerken özellikle kullanışlıdır.

fetchProfile
    .zip(fetchSettings)
    .sink { profile, settings in
        print("Both loaded")
    }
    .store(in: &cancellables)

İşleçleri Zincirleme

Gerçek akışlar, karmaşık eşzamansız akışları bildirime dayalı olarak ifade etmek için birden çok işleci zincirler.

searchTextPublisher
    .removeDuplicates()
    .flatMap { query in
        apiClient.search(query)
    }
    .map { results in
        results.prefix(10)
    }
    .sink { print($0) }
    .store(in: &cancellables)

Hızlı Kontrol

İşleçlerle ilgili bilginizi sınayın.

Özet

Akışları dönüştürmeyi ve birleştirmeyi öğrendiniz:

  • flatMap — değeri yayımlayıcıya dönüştürür ve düzleştirir
  • merge — aynı türdeki akışları iç içe geçirir
  • combineLatest — her birinin en yenisini kullanır, herhangi bir yayımla tetiklenir
  • zip — dizine göre eşleşen çiftler oluşturur

Bu işleçler, karmaşık eşzamansız mantığı bildirime dayalı olarak birleştirmenizi sağlar.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“Akışları Dönüştürme ve Birleştirme” dersi ücretsiz mi?

Evet — “Akışları Dönüştürme ve Birleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Akışları Dönüştürme ve Birleştirme” dersinde ne öğreneceğim?

flatMap, merge, combineLatest ve zip kullanın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Akışları Dönüştürme ve Birleştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Akışları Dönüştürme ve Birleştirme
  2. Zamanlayıcılar ve İş Parçacıkları
  3. Hata İşleme Operatörleri
  4. Özel Yayıncılar ve Aboneler
← Swift Academy Sayfasına Dön