Akışları Dönüştürme ve Birleştirme
flatMap, merge, combineLatest ve zip kullanın.
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.
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
- Akışları Dönüştürme ve Birleştirme
- Zamanlayıcılar ve İş Parçacıkları
- Hata İşleme Operatörleri
- Özel Yayıncılar ve Aboneler