Menu
Coddy logo textTech

compactMap

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 28 / 56.

compactMap, opsiyonellerin filtrelendiği bir map işlemidir. Closure bir Optional döndürebilir; compactMap, nil sonuçları atar ve geri kalanları unwrap eder (çözer).

let strings = ["3", "hi", "7", "!", "1"]
let numbers = strings.compactMap { Int($0) }
print(numbers)               // [3, 7, 1]

Int("hi"), "hi" içinden bir sayı ayrıştıramadığı için nil döndürür. compactMap bunları otomatik olarak dışarı atar ve size temiz bir [Int] verir.

O olmasaydı, strings.map { Int($0) } yazar ve içinde nil değerleri karışmış bir [Int?] elde ederdiniz, ardından bunları kendiniz filtrelemek zorunda kalırdınız. compactMap her iki adımı tek seferde yapar.

challenge icon

Görev

Kolay

Tek bir giriş satırı okuyun: tam sayılar ve çöp metinlerin (bazı girdiler ayrıştırılamaz) virgülle ayrılmış bir karışımı.

Yazdırın:

  1. Tam sayılar (giriş sırasına göre), , ile birleştirilmiş
  2. Kaç girdinin atıldığı (ayrıştırılamayanlar)
  3. Ayrıştırılan tam sayıların toplamı

3,hi,7,!,1,42,oops girişi için çıktı şöyledir:

3,7,1,42
3
53

Kendin dene

let parts = readLine()!.components(separatedBy: ",")

// TODO: compactMap ile ints'e dönüştür; birleştirilmiş halini, atılan sayısını ve toplamı yazdır
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