0Pricing
Swift Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พร็อพเพอร์ตีและซับสคริปต์
  2. lazy และตัวสังเกตพร็อพเพอร์ตี
  3. พร็อพเพอร์ตีคำนวณด้วย get/set
  4. ซับสคริปต์สำหรับการกำหนดดัชนีแบบกำหนดเอง
← กลับไปที่ Swift Academy