Menu
CoddyTech

compactMap

Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 28 dari 56.

compactMap adalah map dengan opsi untuk menyaring nilai opsional. Closure dapat mengembalikan Optional; compactMap membuang hasil nil dan membuka nilai lainnya.

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

Int("hi") mengembalikan nil karena tidak bisa mengurai angka dari "hi". compactMap membuangnya secara otomatis dan memberikan [Int] yang bersih.

Tanpanya, kamu harus menulis strings.map { Int($0) } dan akan mendapatkan [Int?] yang tercampur dengan nilai nil, lalu harus menyaringnya sendiri. compactMap melakukan kedua langkah itu sekaligus.

challenge icon

Tantangan

Mudah

Baca satu baris input: campuran bilangan bulat dan teks sampah yang dipisahkan koma (beberapa entri tidak bisa diurai).

Cetak:

  1. Bilangan bulat (sesuai urutan input), digabungkan dengan ,
  2. Jumlah entri yang dihapus (tidak bisa diurai)
  3. Jumlah bilangan bulat yang berhasil diurai

Untuk input 3,hi,7,!,1,42,oops, outputnya adalah:

3,7,1,42
3
53

Coba sendiri

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

// TODO: gunakan compactMap untuk mengubahnya menjadi bilangan bulat; cetak hasil yang digabungkan, jumlah yang dibuang, dan totalnya
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift