Swift Academy · Pelajaran

Properti lazy

Tunda pekerjaan transformasi hingga diperlukan.

Pelajaran 1 dari 413 langkah

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!)  // 2

Properti 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 2

lazy 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 LazyMapSequence

Mewujudkan 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)  // 4

Kapan 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!)  // 7

Pemeriksaan 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
  • .lazy mengembalikan 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.

Gratis untuk memulai

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.

Semua pelajaran dalam kursus ini

  1. Properti lazy
  2. map dan filter Lazy
  3. Pertukaran Lazy dan Eager
  4. Membangun Rangkaian Lazy Kustom
← Kembali ke Swift Academy