map dan compactMap
Transformasikan elemen dan buang nilai nil.
map dan compactMap adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Apa Itu map?
map adalah fungsi tingkat tinggi: fungsi ini menerima sebuah fungsi dan menerapkannya ke setiap elemen dalam sekuens, lalu mengembalikan larik baru yang berisi hasil yang telah diubah.
- Koleksi asli tidak pernah diubah
- Jumlah hasil selalu sama dengan jumlah masukan
- Jenis elemen dapat berubah, misalnya
Int→String
map Sederhana
Menggandakan setiap angka dalam sebuah larik:
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]Mengubah Jenis Elemen
map dapat mengubah nilai Int menjadi nilai String:
let ids = [10, 20, 30]
let labels = ids.map { "ID-\($0)" }
print(labels) // ["ID-10", "ID-20", "ID-30"]map dengan Fungsi Bernama
Anda dapat meneruskan fungsi apa pun dengan tanda tangan yang sesuai, bukan hanya fungsi penutup di akhir:
let words = ["swift", "map"]
let upper = words.map { $0.uppercased() }
print(upper) // ["SWIFT", "MAP"]Masalah yang Tidak Dapat Diatasi map
map mempertahankan setiap elemen. Jika transformasi Anda mengembalikan nilai opsional (yang mungkin gagal), Anda akan mendapatkan larik nilai opsional seperti [Int?] — penuh dengan celah nil yang harus Anda saring nanti.
Itulah tepatnya yang diatasi oleh compactMap.
Memperkenalkan compactMap
compactMap mengubah setiap elemen dan membuang hasil apa pun yang berupa nil, lalu mengembalikan larik tanpa nilai opsional:
let raw = ["1", "2", "x", "4"]
let nums = raw.compactMap { Int($0) }
print(nums) // [1, 2, 4] -- "x" was droppedmap dan compactMap Berdampingan
Perbedaannya terletak pada apakah hasil nil tetap dipertahankan:
let raw = ["1", "x", "3"]
print(raw.map { Int($0) }) // [Optional(1), nil, Optional(3)]
print(raw.compactMap { Int($0) }) // [1, 3]Membuka Nilai Opsional dalam Koleksi
compactMap adalah cara idiomatis untuk menghapus nilai nil dari larik nilai opsional:
let maybe: [Int?] = [1, nil, 3, nil, 5]
let clean = maybe.compactMap { $0 }
print(clean) // [1, 3, 5]Mengurai dengan compactMap
Penggunaan nyata yang umum: hanya mengurai baris masukan yang valid:
let lines = ["42", "", "hello", "7"]
let values = lines.compactMap { Int($0) }
print(values) // [42, 7]
print(values.reduce(0, +)) // 49Menggabungkan map dan compactMap
Anda dapat merangkainya: gunakan map untuk membentuk data, lalu compactMap untuk mempertahankan hanya hasil yang berhasil:
let scores = ["90", "85", "n/a", "70"]
let passed = scores
.compactMap { Int($0) }
.map { $0 >= 80 ? "pass" : "fail" }
print(passed) // ["pass", "pass", "fail"]compactMap pada Rangkaian Nilai Opsional
compactMap juga bekerja dengan baik pada akses properti opsional:
struct User { let name: String? }
let users = [User(name: "Ann"), User(name: nil), User(name: "Bo")]
let names = users.compactMap { $0.name }
print(names) // ["Ann", "Bo"]Pemeriksaan Singkat
Fungsi mana yang mengubah elemen dan menghapus hasil nil dalam satu langkah?
Ringkasan
Anda telah mempelajari dua fungsi inti untuk mengubah data:
map— mengubah setiap elemen; jumlah hasil sama dengan jumlah masukancompactMap— mengubah elemen dan membuangnil; sangat baik untuk penguraian dan membuka nilai opsional- Keduanya mengembalikan larik baru dan tidak pernah mengubah sumbernya
- Rangkai keduanya untuk membentuk data, lalu menyaringnya dengan rapi
Berikutnya: penyaringan dengan predikat.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “map dan compactMap” gratis?
Ya — teks lengkap “map dan compactMap” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “map dan compactMap”?
Transformasikan elemen dan buang nilai nil. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “map dan compactMap” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- map dan compactMap
- filter dan Predikat
- reduce dan reduce(into:)
- flatMap dan Perantaian