Properti lazy
Tunda pekerjaan transformasi hingga diperlukan.
Properti lazy adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Evaluasi Langsung sebagai Bawaan
Metode koleksi standar bersifat langsung: map, filter, dan sebagainya berjalan segera serta langsung membangun seluruh larik baru, meskipun Anda hanya membaca elemen pertama.
Evaluasi Langsung Berlangsung Sekarang
Ini membangun seluruh larik yang telah diubah sejak awal:
let nums = [1, 2, 3, 4, 5]
let doubled = nums.map { $0 * 2 } // whole array built now
print(doubled.first!) // 2Properti Evaluasi Tertunda
Setiap koleksi menyediakan sebuah .lazy view. Operasi pada view tertunda bersifat ditangguhkan: operasi tersebut tidak berjalan sampai Anda benar-benar melakukan iterasi atau meminta elemen tertentu.
Membuat View Tertunda
Cukup awali rangkaian dengan .lazy:
let nums = [1, 2, 3, 4, 5]
let view = nums.lazy.map { $0 * 2 }
// nothing computed yet
print(Array(view)) // [2, 4, 6, 8, 10]Bukti Eksekusi Ditangguhkan
Efek samping menunjukkan bahwa fungsi penutup hanya berjalan saat diperlukan:
let nums = [1, 2, 3]
let lazyMapped = nums.lazy.map { n -> Int in
print("transforming \(n)")
return n * 2
}
print("created view")
print(lazyMapped.first!) // prints "transforming 1" then 2lazy Mengembalikan Jenis Berbeda
Rangkaian tertunda adalah pembungkus ringan, bukan Array:
let nums = [1, 2, 3]
let view = nums.lazy.map { $0 + 1 }
print(type(of: view).self != [Int].self) // true -- it is a LazyMapSequenceMewujudkan View Tertunda
Ubah kembali menjadi larik konkret dengan Array(...) saat Anda perlu menyimpan atau mengembalikannya:
let nums = [1, 2, 3]
let result: [Int] = Array(nums.lazy.map { $0 * 10 })
print(result) // [10, 20, 30]Evaluasi Tertunda dan first(where:)
Evaluasi tertunda sangat bermanfaat ketika Anda berhenti lebih awal. Hanya elemen yang cukup untuk menemukan kecocokan yang diproses:
let nums = [1, 2, 3, 4, 5, 6]
let firstBig = nums.lazy.map { $0 * $0 }.first { $0 > 10 }
print(firstBig!) // 16 (stops at 4*4)Evaluasi Tertunda pada Rentang
Rentang juga dapat digunakan dengan evaluasi tertunda, yang berguna untuk sekuens besar atau yang hampir tak terbatas:
let firstThree = (1...1000).lazy.map { $0 * $0 }.prefix(3)
print(Array(firstThree)) // [1, 4, 9]Saat View Dievaluasi Ulang
View tertunda menghitung ulang setiap kali Anda melakukan iterasi — view tersebut tidak menyimpan hasil. Lakukan iterasi dua kali dan transformasinya berjalan dua kali:
var calls = 0
let view = [1, 2].lazy.map { (n: Int) -> Int in calls += 1; return n }
_ = Array(view)
_ = Array(view)
print(calls) // 4Kapan Menggunakan Evaluasi Tertunda
Tambahkan .lazy ketika Anda memiliki rangkaian panjang tetapi hanya menggunakan sebagian hasilnya — kecocokan pertama, awalan, atau satu reduce. Untuk larik kecil yang digunakan seluruhnya, cara langsung lebih sederhana.
let nums = Array(1...100)
let result = nums.lazy.filter { $0 % 7 == 0 }.first
print(result!) // 7Pemeriksaan Singkat
Apa yang diubah oleh properti .lazy pada map dan filter?
Ringkasan
Anda telah mempelajari dasar-dasar evaluasi tertunda:
- Metode koleksi standar bersifat langsung — metode tersebut segera membangun larik
.lazymengembalikan view yang ditangguhkan, yaitu jenis sekuens khusus- Pekerjaan hanya dilakukan ketika Anda melakukan iterasi atau meminta sebuah elemen
- Wujudkan dengan
Array(...); view dijalankan ulang pada setiap iterasi
Berikutnya: rangkaian map dan filter tertunda.
Belajar Swift 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
- 122
- Pelajaran
- 409
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Properti lazy” gratis?
Ya — teks lengkap “Properti lazy” 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 “Properti lazy”?
Tunda pekerjaan transformasi hingga diperlukan. 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 1 dari 4.
Berapa lama pelajaran “Properti lazy” 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.