fold, reduce dan expand
Agregat dan ratakan iterable.
fold, reduce dan expand ialah pelajaran Dart Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Dart Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Dart Academy merangkumi sejumlah 4 pelajaran.
Mengagregatkan Koleksi
Selalunya Anda mahu meringkaskan keseluruhan senarai menjadi satu nilai, seperti jumlah atau nilai maksimum. Dart menyediakan fold dan reduce khusus untuk tujuan itu. 🧮
Kenali reduce
reduce menggabungkan elemen secara berpasangan menggunakan fungsi Anda. Ia bermula dengan item pertama, jadi senarai mestilah tidak kosong.
var sum = [1, 2, 3, 4].reduce((a, b) => a + b);
print(sum); // 10reduce Membawa Hasil
Setiap langkah menerima hasil semasa dan elemen seterusnya. Anggap a sebagai pengumpul yang berkembang sepanjang proses.
var max = [3, 9, 2].reduce((a, b) => a > b ? a : b);
print(max); // 9Perangkap Senarai Kosong
Memanggil reduce pada senarai kosong akan mencetuskan StateError. Apabila senarai mungkin kosong, gunakan fold.
Kenali fold
fold serupa dengan reduce, tetapi Anda memberikannya nilai permulaan. Benih itu menetapkan jenis hasil dan mengendalikan senarai kosong dengan selamat.
var total = [1, 2, 3].fold(0, (a, b) => a + b);
print(total); // 6fold Boleh Menukar Jenis
Oleh sebab benih menentukan jenis, fold boleh menukar senarai int menjadi String, Map atau apa-apa sahaja yang Anda perlukan.
var joined = [1, 2, 3].fold('', (a, b) => '$a$b');
print(joined); // 123fold Selamat untuk Senarai Kosong
Dengan senarai kosong, fold hanya mengembalikan benih. Tiada ranap dan tiada kes khas untuk diingati.
var s = <int>[].fold(0, (a, b) => a + b);
print(s); // 0reduce berbanding fold
Gunakan reduce untuk gabungan pantas yang mengekalkan jenis bagi senarai yang tidak kosong. Gunakan fold apabila Anda memerlukan benih atau jenis hasil baharu.
Kenali expand
expand memetakan setiap elemen kepada iterable, kemudian meratakannya menjadi satu aliran nilai. Ia ialah gabungan map dan flatten.
var r = [1, 2].expand((n) => [n, n * 10]);
print(r.toList()); // [1, 10, 2, 20]Meratakan Senarai Bersarang
Tugas biasa untuk expand ialah meratakan senarai yang mengandungi senarai menjadi satu senarai rata melalui satu panggilan yang kemas.
var flat = [[1, 2], [3, 4]].expand((x) => x);
print(flat.toList()); // [1, 2, 3, 4]Merangkaikan Ketiga-tiganya
Kaedah-kaedah ini boleh digabungkan dengan baik. Anda boleh menggunakan expand untuk meratakan, kemudian fold untuk mengagregatkan, dalam satu saluran pemprosesan yang mudah dibaca.
var t = [[1, 2], [3]].expand((x) => x).fold(0, (a, b) => a + b);
print(t); // 6Semakan Pantas
Pilih alat yang tepat untuk jumlah yang selamat digunakan pada senarai kosong.
Imbas Kembali
reduce menggabungkan, fold menggabungkan dengan benih dan expand meratakan. Bersama-sama, ketiga-tiganya memudahkan pengagregatan sebarang koleksi. 🎉
Pelajari Dart dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “fold, reduce dan expand” percuma?
Ya — teks penuh “fold, reduce dan expand” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Dart Academy, tingkat taraf kepada CoddyKit PRO. Kursus Dart Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “fold, reduce dan expand”?
Agregat dan ratakan iterable. Anda berlatih Dart Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Dart Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Dart Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “fold, reduce dan expand” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Dart Academy ini?
Ya. Setiap pelajaran Dart Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Fungsi Orde Tinggi dan Currying
- fold, reduce dan expand
- Iterable Malas dan Penjana dengan sync*
- Menggubah Saluran Paip Fungsi Tulen