Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

İki satırlık girdi okuyun:

  1. Virgülle ayrılmış tam sayı listesi
  2. Bir tam sayı min

Ayrı satırlarda şunları yazdırın:

  1. min değerinden kesinlikle büyük olan tam sayılar, , ile birleştirilmiş (hiçbiri uymuyorsa boş bırakın)
  2. Şartı sağlayan tam sayıların kareleri, , ile birleştirilmiş
  3. Ş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
3

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
quiz iconKendini test et

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

Kendi başına pratik yap: Swift playground