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.
Tantangan
MudahBaca satu baris input: campuran bilangan bulat dan teks sampah yang dipisahkan koma (beberapa entri tidak bisa diurai).
Cetak:
- Bilangan bulat (sesuai urutan input), digabungkan dengan
, - Jumlah entri yang dihapus (tidak bisa diurai)
- Jumlah bilangan bulat yang berhasil diurai
Untuk input 3,hi,7,!,1,42,oops, outputnya adalah:
3,7,1,42
3
53Coba sendiri
let parts = readLine()!.components(separatedBy: ",")
// TODO: gunakan compactMap untuk mengubahnya menjadi bilangan bulat; cetak hasil yang digabungkan, jumlah yang dibuang, dan totalnya
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi Kalender3dictionary
Mendeklarasikan dictionaryPencarian OpsionalMemperbarui dictionaryMenelusuri dictionaryMengelompokkan NilaiRangkuman: Inventaris6Fungsi Orde Tinggi Bagian 2
compactMapflatMapsorted(by:)Membangun PipelineRingkasan: Papan PeringkatLatihan sendiri: Playground Swift