lazy และตัวสังเกตพร็อพเพอร์ตี
ใช้พร็อพเพอร์ตีที่จัดเก็บแบบ lazy สำหรับงานที่เลื่อนเวลา และสังเกตการเปลี่ยนแปลงของพร็อพเพอร์ตีที่จัดเก็บด้วย willSet/didSet
lazy และตัวสังเกตพร็อพเพอร์ตี เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
ภาพรวม
บทเรียนนี้เน้นสองเรื่องสำคัญ ได้แก่ พร็อพเพอร์ตีแบบเก็บค่าที่เริ่มสร้างเมื่อจำเป็น และตัวสังเกตการณ์พร็อพเพอร์ตี (willSet/didSet)
พร็อพเพอร์ตีที่เริ่มสร้างเมื่อจำเป็น
เริ่มสร้างเมื่อจำเป็นจะเลื่อนการสร้างออกไปจนกว่าจะมีการเข้าถึงครั้งแรก เหมาะกับงานที่ใช้ทรัพยากรมากหรือกรณีที่จำเป็นต้องใช้ self
struct DataLoader {
lazy var data: [Int] = {
print("Loading data...")
return [1, 2, 3]
}()
}
var loader = DataLoader()
print("before access")
print(loader.data) // triggers initialization only nowการเริ่มสร้างเมื่อจำเป็นกับ self
คลาสสามารถใช้ เริ่มสร้างเมื่อจำเป็นเพื่อเข้าถึงค่าที่ขึ้นอยู่กับ self หลังการเริ่มต้นเสร็จสิ้น
class CacheOwner {
let name: String
lazy var hello: String = "Hi, " + name // uses self safely after init
init(name: String) { self.name = name }
}
let co = CacheOwner(name: "Ada")
print(co.hello)ตัวสังเกตการณ์พร็อพเพอร์ตี
ตัวสังเกตการณ์จะครอบการเปลี่ยนแปลงของพร็อพเพอร์ตีแบบเก็บค่า ใช้ newValue และ oldValue เพื่อดูบริบท
struct Counter {
var value: Int = 0 {
willSet { print("will set to", newValue) }
didSet { print("did set from", oldValue) }
}
}
var c = Counter()
c.value = 5
c.value = 9จำกัดค่าด้วย didSet
ใช้ didSet เพื่อปรับรูปแบบหรือจำกัดค่าหลังการกำหนดค่า
struct Score {
var raw: Int = 0 {
didSet {
if raw < 0 { raw = 0 }
if raw > 100 { raw = 100 }
}
}
}
var s = Score()
s.raw = 120 // clamped to 100
print(s.raw)
s.raw = -5 // clamped to 0
print(s.raw)หมายเหตุ
หมายเหตุ:
- เริ่มสร้างเมื่อจำเป็นใช้ได้กับพร็อพเพอร์ตีแบบเก็บค่าที่เป็น var เท่านั้น
- ตัวสังเกตการณ์ใช้กับพร็อพเพอร์ตีแบบเก็บค่า ส่วนพร็อพเพอร์ตีแบบคำนวณให้ใช้ตรรกะรับค่า/กำหนดค่าแทน
- ตัวสังเกตการณ์จะไม่ถูกเรียกระหว่างการเริ่มต้น ก่อนที่พื้นที่จัดเก็บจะพร้อมใช้งาน
ความหมายของการเริ่มสร้างเมื่อจำเป็น
ตรวจสอบอย่างรวดเร็ว: lazy ทำหน้าที่อะไร
สรุปทบทวน
สรุปทบทวน: ใช้การเริ่มสร้างเมื่อจำเป็นเพื่อเลื่อนการตั้งค่าที่ใช้ทรัพยากรมาก และใช้ willSet/didSet เพื่อตอบสนองต่อการเปลี่ยนแปลงของพร็อพเพอร์ตีแบบเก็บค่าด้วยกฎง่าย ๆ
คำถามที่พบบ่อย
บทเรียน “lazy และตัวสังเกตพร็อพเพอร์ตี” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “lazy และตัวสังเกตพร็อพเพอร์ตี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “lazy และตัวสังเกตพร็อพเพอร์ตี”
ใช้พร็อพเพอร์ตีที่จัดเก็บแบบ lazy สำหรับงานที่เลื่อนเวลา และสังเกตการเปลี่ยนแปลงของพร็อพเพอร์ตีที่จัดเก็บด้วย willSet/didSet คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “lazy และตัวสังเกตพร็อพเพอร์ตี” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พร็อพเพอร์ตีและซับสคริปต์
- lazy และตัวสังเกตพร็อพเพอร์ตี
- พร็อพเพอร์ตีคำนวณด้วย get/set
- ซับสคริปต์สำหรับการกำหนดดัชนีแบบกำหนดเอง