Filter
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 24 / 56.
filter, bir yüklem (predicate) closure'ı alır ve yalnızca closure'ın true döndürdüğü öğeleri içeren yeni bir dizi döndürür.
let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Sonuç orijinal sırayı korur. Sonuç türü girdi türüyle eşleşir, herhangi bir dönüşüm gerçekleşmez, yalnızca bir seçim yapılır.
filter, map ile doğal bir şekilde zincirlenir:
let big = nums
.filter { $0 > 2 }
.map { $0 * $0 }
print(big) // [9, 16, 25, 36]Her bir zinciri, tıpkı bir boru hattı gibi yukarıdan aşağıya doğru okuyun. Her adım yeni bir dizi üretir; hiçbir şey orijinali değiştirmez.
Görev
Kolayİki satırlık girdi okuyun:
- Virgülle ayrılmış tam sayı listesi
- Bir tam sayı
min
Ayrı satırlarda şunları yazdırın:
mindeğerinden kesinlikle büyük olan tam sayılar,,ile birleştirilmiş (hiçbiri uymuyorsa boş bırakın)- Şartı sağlayan tam sayıların kareleri,
,ile birleştirilmiş - Şartı sağlayan tam sayıların sayısı
Bir zincir olarak filter + map kullanın. Girdi üzerinde iki kez yineleme yapmayın.
1. satırdaki 1,5,2,8,3,7 ve 2. satırdaki 4 girdisi için çıktı şöyledir:
5,8,7
25,64,49
3Kopya kağıdı
Bir koşulla eşleşen öğeleri seçmek için filter kullanın:
let evens = [1,2,3,4].filter { $0 % 2 == 0 } // [2, 4]filter'ı map ile bir işlem hattı (pipeline) olarak zincirleyin:
let result = nums
.filter { $0 > 2 }
.map { $0 * $0 } // [9, 16, 25, 36]Her adım yeni bir dizi döndürür; orijinal olan değişmez. Sıralama korunur.
Kendin dene
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!
// YAPILACAK: bir kez > min filtrele, sonra karelerle eşleştir; her ikisini de yazdır, sonra say
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri