Iterable Malas dan Penjana dengan sync*
Hasilkan nilai apabila diperlukan.
Iterable Malas dan Penjana dengan sync* ialah pelajaran Dart Academy percuma di CoddyKit. Ini ialah pelajaran 3 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.
Maksud Lazy
Iterable lazy tidak mengira nilainya sehingga Anda benar-benar memintanya. Kerja berlaku mengikut keperluan, bukan sekaligus. 🦥
Iterable adalah Lazy
Kaedah seperti map dan where mengembalikan Iterable lazy. Tiada apa-apa dijalankan sehingga Anda melakukan lelaran atau memanggil toList.
var it = [1, 2, 3].map((n) {
print('seen $n');
return n * 2;
});Belum Ada Apa-apa yang Berjalan
Sehingga Anda menggunakan iterable itu, isi map tidak pernah dilaksanakan. Kemalasan membolehkan Anda menerangkan kerja dan menangguhkan kosnya.
for (var x in it) print(x); // now it runsKelebihan Kemalasan
Kemalasan menjimatkan kerja apabila Anda hanya memerlukan beberapa hasil. Digabungkan dengan take, Anda boleh berhenti awal dan melangkau yang selebihnya.
var first2 = it.take(2).toList();Kenali Penjana sync*
Fungsi sync* ialah penjana yang membina Iterable lazy. Ia menghasilkan nilai satu demi satu apabila diminta.
Iterable<int> count(int n) sync* {
for (var i = 1; i <= n; i++) yield i;
}Kata Kunci yield
Di dalam penjana, yield menghantar satu nilai kembali kepada pemanggil dan berhenti seketika sehingga nilai seterusnya diperlukan.
print(count(3).toList()); // [1, 2, 3]Jujukan Tidak Terhingga
Oleh sebab nilainya lazy, penjana boleh menerangkan jujukan tidak terhingga dengan selamat, selagi Anda hanya mengambil bahagian yang terhingga.
Iterable<int> naturals() sync* {
var i = 0;
while (true) yield ++i;
}Mengambil Bahagian Terhingga
Pasangkan penjana tidak terhingga dengan take untuk mendapatkan perkara yang diperlukan sahaja. Gelung berhenti sebaik sahaja bahagian Anda lengkap.
print(naturals().take(5).toList()); // [1, 2, 3, 4, 5]yield* Mewakilkan
Gunakan yield* untuk menghasilkan setiap nilai daripada iterable atau penjana lain. Ia meratakan satu jujukan ke dalam jujukan semasa.
Iterable<int> both() sync* {
yield* count(2);
yield* count(2);
}Penjana berbanding Membina Senarai
Penjana mengelakkan pembinaan senarai penuh dalam memori. Nilai dialirkan, jadi jujukan besar atau tanpa penghujung kekal ringan dari segi memori.
sync* berbanding async*
Gunakan sync* untuk iterable lazy yang segerak. Padanan tak segeraknya, async*, menghasilkan Stream untuk jujukan peristiwa tak segerak.
Semakan Pantas
Uji pemahaman Anda tentang penjana.
Imbas Kembali
Iterable adalah lazy dan penjana sync* menghasilkan nilai mengikut keperluan. Ini membolehkan Anda memodelkan jujukan yang tidak terhingga dengan kos yang rendah. 🌟
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 “Iterable Malas dan Penjana dengan sync*” percuma?
Ya — teks penuh “Iterable Malas dan Penjana dengan sync*” 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 “Iterable Malas dan Penjana dengan sync*”?
Hasilkan nilai apabila diperlukan. 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 3 daripada 4.
Berapa lamakah pelajaran “Iterable Malas dan Penjana dengan sync*” 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