Dart Academy · Pelajaran

fold, reduce, dan expand

Mengagregasi dan meratakan iterable

Pelajaran 2 dari 413 langkah

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); // 10

reduce 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); // 9

Jebakan 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); // 6

fold 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); // 123

fold 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); // 0

reduce 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); // 6

Cek 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. 🎉

Gratis untuk memulai

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

  1. Fungsi Orde Tinggi dan Currying
  2. fold, reduce, dan expand
  3. Iterable Malas dan Generator dengan sync*
  4. Menyusun Pipeline Fungsi Murni
← Kembali ke Dart Academy