Swift Academy · บทเรียน

พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต

กำหนดพร็อพเพอร์ตีที่จัดเก็บและคำนวณ สร้างพร็อพเพอร์ตีคำนวณแบบอ่านอย่างเดียวและแบบ get/set และตอบสนองต่อการเปลี่ยนแปลงด้วยตัวสังเกต willSet/didSet

บทเรียน 2 จาก 38 ขั้นตอน

พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวม

บทเรียนนี้เปรียบเทียบพร็อพเพอร์ตีแบบเก็บค่ากับพร็อพเพอร์ตีแบบคำนวณ และแสดงการใช้ตัวสังเกตการณ์ willSet/didSet เพื่อตอบสนองต่อการเปลี่ยนแปลง

แบบเก็บค่าเทียบกับแบบคำนวณ

พร็อพเพอร์ตีแบบเก็บค่าใช้เก็บข้อมูล ส่วนพร็อพเพอร์ตีแบบคำนวณจะคำนวณค่าเมื่อมีการเข้าถึง

struct Rectangle {
    // stored properties (hold data)
    var width: Double
    var height: Double

    // computed property (derived on access)
    var area: Double {
        return width * height   // read-only computed
    }
}
let r = Rectangle(width: 3, height: 4)
print("area =", r.area)  // 12

การรับค่าและกำหนดค่าแบบคำนวณ

เพิ่มส่วนรับค่า/กำหนดค่าเพื่อสร้างพร็อพเพอร์ตีแบบคำนวณที่อ่านและเขียนได้ ซึ่งช่วยรักษาความสอดคล้องของเงื่อนไขคงรูป

struct Circle {
    var radius: Double           // stored
    var diameter: Double {       // computed read-write
        get { radius * 2 }
        set { radius = newValue / 2 }
    }
}
var c = Circle(radius: 5)
print(c.diameter)   // 10
c.diameter = 14
print(c.radius)     // 7

ตัวสังเกตการณ์ทำงาน

ตัวสังเกตการณ์จะทำงานรอบการเปลี่ยนแปลงของพร็อพเพอร์ตีแบบเก็บค่า ใช้ newValue/oldValue เพื่อดูบริบท

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5
cnt.value = 9

ตัวสังเกตการณ์เทียบกับแบบคำนวณ

หมายเหตุ:

  • ตัวสังเกตการณ์ใช้กับพร็อพเพอร์ตีแบบเก็บค่า รวมถึงพร็อพเพอร์ตีที่กำหนดค่าในส่วนขยาย
  • พร็อพเพอร์ตีแบบคำนวณไม่รองรับตัวสังเกตการณ์ ให้ใส่ตรรกะไว้ในส่วนกำหนดค่าแทน
  • ตัวสังเกตการณ์จะไม่ถูกเรียกระหว่างการเริ่มต้น ก่อนที่พื้นที่จัดเก็บจะพร้อมใช้งาน

รูปแบบการใช้งานจริง

ใช้ตัวสังเกตการณ์ร่วมกับการปรับรูปแบบข้อมูลนำเข้า และใช้พร็อพเพอร์ตีแบบคำนวณเพื่อหาค่าข้อมูลสำหรับแสดงผล

struct Score {
    var raw: Int = 0 {
        didSet {
            if raw < 0 { raw = 0 }
            if raw > 100 { raw = 100 }
        }
    }
    var label: String {
        // computed: derive a label from current raw
        if raw >= 90 { return "A" }
        if raw >= 80 { return "B" }
        if raw >= 70 { return "C" }
        return "D"
    }
}
var s = Score()
s.raw = 120
print(s.raw, s.label)   // 100 A
s.raw = -5
print(s.raw, s.label)   // 0 D

กฎของตัวสังเกตการณ์

ตรวจสอบอย่างรวดเร็ว: อะไรทำงานก่อนและหลังพร็อพเพอร์ตีแบบเก็บค่าเปลี่ยนแปลง

สรุปทบทวน

สรุปทบทวน: ใช้พร็อพเพอร์ตีแบบเก็บค่าสำหรับข้อมูล ใช้พร็อพเพอร์ตีแบบคำนวณสำหรับค่าที่หามา (การรับค่า/กำหนดค่า) และใช้ willSet/didSet เพื่อตอบสนองต่อการเปลี่ยนแปลงของพร็อพเพอร์ตีแบบเก็บค่า

เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต”

กำหนดพร็อพเพอร์ตีที่จัดเก็บและคำนวณ สร้างพร็อพเพอร์ตีคำนวณแบบอ่านอย่างเดียวและแบบ get/set และตอบสนองต่อการเปลี่ยนแปลงด้วยตัวสังเกต willSet/didSet คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น
  2. พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต
  3. ตัวเริ่มต้นและ deinit (คลาส)
← กลับไปที่ Swift Academy