flatMap dan Perantaian
Ratakan koleksi bersarang dan rantai transformasi.
flatMap dan Perantaian adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Dua Bentuk flatMap
flatMap pada sekuens meratakan satu tingkat penyarangan. Fungsi ini menerapkan fungsi penutup yang mengembalikan sekuens untuk setiap elemen, lalu menggabungkan semua sekuens tersebut menjadi satu larik datar.
Meratakan Larik Bersarang
Ubah larik yang berisi larik menjadi satu larik:
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 }
print(flat) // [1, 2, 3, 4, 5]flatMap yang Menghasilkan Sekuens
Setiap elemen dapat berkembang menjadi banyak elemen:
let nums = [1, 2, 3]
let expanded = nums.flatMap { [$0, $0 * 10] }
print(expanded) // [1, 10, 2, 20, 3, 30]Memasangkan Setiap Kombinasi
flatMap berguna untuk hasil kali silang:
let suits = ["Hearts", "Spades"]
let ranks = ["A", "K"]
let deck = suits.flatMap { suit in ranks.map { "\($0) of \(suit)" } }
print(deck) // ["A of Hearts", "K of Hearts", "A of Spades", "K of Spades"]flatMap dibandingkan compactMap
Dahulu flatMap juga membuka nilai opsional, tetapi peran tersebut kini dialihkan ke compactMap. Saat ini:
flatMap— meratakan sekuens bersarangcompactMap— membuangnildari hasil opsional
Meratakan Kata Menjadi Karakter
Uraikan setiap string menjadi karakter-karakternya:
let words = ["hi", "yo"]
let chars = words.flatMap { Array($0) }
print(chars) // ["h", "i", "y", "o"]Menggabungkan Subhasil
Kumpulkan item dari objek model yang bersarang:
struct Team { let members: [String] }
let teams = [Team(members: ["Ann", "Bo"]), Team(members: ["Cy"])]
let all = teams.flatMap { $0.members }
print(all) // ["Ann", "Bo", "Cy"]Merangkai Transformasi
Kekuatan sebenarnya muncul saat Anda merangkai fungsi: map, filter, flatMap, dan reduce terbaca dari atas ke bawah sebagai alur data. Setiap langkah menghasilkan sekuens baru untuk langkah berikutnya.
Alur Data Lengkap
Saring, ratakan, ubah, lalu jumlahkan:
let groups = [[1, 2, 3], [4, 5], [6]]
let result = groups
.flatMap { $0 }
.filter { $0 % 2 == 0 }
.map { $0 * $0 }
.reduce(0, +)
print(result) // 4 + 16 + 36 = 56flatMap lalu compactMap
Ratakan terlebih dahulu, lalu pertahankan hanya nilai yang dapat diurai:
let rows = [["1", "x"], ["3", "4"]]
let nums = rows
.flatMap { $0 }
.compactMap { Int($0) }
print(nums) // [1, 3, 4]Menjaga Keterbacaan Rangkaian
Letakkan setiap langkah pada barisnya sendiri dan beri nama pada hasil antara ketika rangkaian menjadi panjang. Keterbacaan lebih penting daripada memadatkan semuanya menjadi satu ekspresi.
let names = ["ann", "BO", "cy"]
let titled = names
.map { $0.lowercased() }
.map { $0.capitalized }
.sorted()
print(titled) // ["Ann", "Bo", "Cy"]Pemeriksaan Singkat
Apa yang dikembalikan oleh [[1, 2], [3]].flatMap { $0 }?
Ringkasan
Anda telah mempelajari perataan dan perangkaian:
flatMapmeratakan satu tingkat sekuens bersarang- Gunakan
compactMap, bukan flatMap, untuk membuang nilai opsional - Rangkai
filter/map/flatMap/reducemenjadi alur data yang mudah dibaca - Satu langkah per baris membuat rangkaian panjang tetap jelas
Kursus selesai! Berikutnya: sekuens tertunda.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “flatMap dan Perantaian” gratis?
Ya — teks lengkap “flatMap dan Perantaian” 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 “flatMap dan Perantaian”?
Ratakan koleksi bersarang dan rantai transformasi. 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 4 dari 4.
Berapa lama pelajaran “flatMap dan Perantaian” 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