0Pricing
Swift Academy · Pelajaran

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 dropped

map 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, +))  // 49

Menggabungkan 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 masukan
  • compactMap — mengubah elemen dan membuang nil; 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

  1. map dan compactMap
  2. filter dan Predikat
  3. reduce dan reduce(into:)
  4. flatMap dan Perantaian
← Kembali ke Swift Academy