fold, reduce, dan expand
Mengagregasi dan meratakan iterable
fold, reduce, dan expand adalah pelajaran Dart Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Dart Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Dart Academy mencakup 4 pelajaran total.
Menggabungkan Koleksi
Sering kali Anda ingin meringkas seluruh daftar menjadi satu nilai, seperti sum atau max. Dart menyediakan fold dan reduce khusus untuk itu. 🧮
Kenali reduce
reduce menggabungkan elemen secara berpasangan menggunakan fungsi Anda. Prosesnya dimulai dari elemen pertama, jadi daftar tidak boleh kosong.
var sum = [1, 2, 3, 4].reduce((a, b) => a + b);
print(sum); // 10reduce Membawa Hasil
Setiap langkah menerima hasil sementara dan elemen berikutnya. Anggaplah a sebagai akumulator yang terus bertambah selama proses berlangsung.
var max = [3, 9, 2].reduce((a, b) => a > b ? a : b);
print(max); // 9Jebakan Daftar Kosong
Memanggil reduce pada daftar kosong akan menimbulkan StateError. Jika daftar mungkin kosong, gunakan fold sebagai gantinya.
Kenali fold
fold mirip dengan reduce, tetapi Anda memberinya nilai awal. Nilai awal tersebut menentukan tipe hasil dan menangani daftar kosong dengan aman.
var total = [1, 2, 3].fold(0, (a, b) => a + b);
print(total); // 6fold Dapat Mengubah Tipe
Karena nilai awal menentukan tipe, fold dapat mengubah daftar int menjadi teks, peta, atau apa pun yang Anda perlukan.
var joined = [1, 2, 3].fold('', (a, b) => '$a$b');
print(joined); // 123fold Aman untuk Daftar Kosong
Dengan daftar kosong, fold cukup mengembalikan nilai awal. Tidak ada kerusakan dan tidak ada kasus khusus yang perlu diingat.
var s = <int>[].fold(0, (a, b) => a + b);
print(s); // 0reduce vs fold
Gunakan reduce untuk penggabungan cepat bertipe sama pada daftar yang tidak kosong. Gunakan fold saat Anda memerlukan nilai awal atau tipe hasil baru.
Kenali expand
expand memetakan setiap elemen ke sebuah iterabel, lalu meratakannya menjadi satu aliran nilai. Fungsinya adalah map ditambah perataan.
var r = [1, 2].expand((n) => [n, n * 10]);
print(r.toList()); // [1, 10, 2, 20]Meratakan Daftar Bersarang
Salah satu penggunaan umum expand adalah meratakan daftar berisi daftar menjadi satu daftar datar dalam satu pemanggilan yang rapi.
var flat = [[1, 2], [3, 4]].expand((x) => x);
print(flat.toList()); // [1, 2, 3, 4]Merangkai Ketiganya
Metode-metode ini berpadu dengan baik. Anda dapat menggunakan expand untuk meratakan, lalu fold untuk menggabungkan, dalam satu alur yang mudah dibaca.
var t = [[1, 2], [3]].expand((x) => x).fold(0, (a, b) => a + b);
print(t); // 6Cek Cepat
Pilih alat yang tepat untuk menjumlahkan dengan aman saat daftar kosong.
Ringkasan
reduce menggabungkan, fold menggabungkan dengan nilai awal, dan expand meratakan. Bersama-sama, ketiganya memudahkan Anda menggabungkan koleksi apa pun. 🎉
Belajar Dart dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “fold, reduce, dan expand” gratis?
Ya — teks lengkap “fold, reduce, dan expand” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Dart Academy, upgrade ke CoddyKit PRO. Kursus Dart Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “fold, reduce, dan expand”?
Mengagregasi dan meratakan iterable Kamu berlatih Dart 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 Dart Academy?
Tidak diperlukan pengalaman sebelumnya. Dart 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 2 dari 4.
Berapa lama pelajaran “fold, reduce, dan expand” 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 Dart Academy ini?
Ya. Setiap pelajaran Dart 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
- Fungsi Orde Tinggi dan Currying
- fold, reduce, dan expand
- Iterable Malas dan Generator dengan sync*
- Menyusun Pipeline Fungsi Murni