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

คุณสมบัติที่จัดเก็บและตัวสังเกตคุณสมบัติ

ใช้ตัวสังเกต didSet และ willSet เพื่อตอบสนองต่อการเปลี่ยนแปลงของคุณสมบัติ

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

ยินดีต้อนรับ

คุณสมบัติที่จัดเก็บไว้ใช้เก็บค่าไว้ภายในโครงสร้างหรือคลาส ตัวสังเกตคุณสมบัติ — `willSet` และ `didSet` — ช่วยให้คุณตอบสนองได้เมื่อค่าของคุณสมบัติที่จัดเก็บไว้เปลี่ยนแปลง

คุณสมบัติที่จัดเก็บไว้

```swift struct Counter { var count: Int = 0 // stored, mutable let name: String // stored, immutable } ``` ค่าทุกค่าที่คุณกำหนดด้วย `let` หรือ `var` ภายในชนิดข้อมูลหนึ่ง ๆ คือคุณสมบัติที่จัดเก็บไว้

ตัวสังเกต didSet

```swift struct Gauge { var level: Int = 0 { didSet { print("Changed from \(oldValue) to \(level)") } } } var g = Gauge() g.level = 5 // "Changed from 0 to 5" ``` `oldValue` คือค่าก่อนหน้าที่มีให้โดยอัตโนมัติ

ตัวสังเกต willSet

```swift struct Slider { var value: Double = 0.5 { willSet { print("About to change to \(newValue)") } } } ``` `newValue` คือค่าที่กำลังเข้ามาซึ่งมีให้โดยอัตโนมัติ `willSet` จะทำงานก่อนการกำหนดค่า

ตัวสังเกตทั้งสองแบบร่วมกัน

```swift var temperature: Double = 20 { willSet { print("Will become \(newValue)") } didSet { print("Was \(oldValue)") } } temperature = 25 // Will become 25.0 // Was 20.0 ```

จำกัดค่าด้วย didSet

```swift var volume: Int = 50 { didSet { if volume > 100 { volume = 100 } if volume < 0 { volume = 0 } } } volume = 150 // clamped to 100 ``` นี่เป็นรูปแบบที่สะอาดสำหรับบังคับใช้เงื่อนไขคงรูปโดยอัตโนมัติ

ตัวสังเกตในคลาสย่อย

ตัวสังเกตคุณสมบัติยังใช้กับคุณสมบัติที่สืบทอดมาได้: ```swift class Base { var x: Int = 0 } class Child: Base { override var x: Int { didSet { print("x changed to \(x)") } } } ```

ตัวสังเกตจะไม่ทำงานระหว่างการเริ่มต้น

```swift struct Model { var value: Int = 0 { didSet { print("changed") } } init(v: Int) { self.value = v } // does NOT trigger didSet } ``` ตัวสังเกตจะไม่ถูกเรียกใช้ระหว่างการกำหนดค่าเริ่มต้นใน `init`

คุณสมบัติที่จัดเก็บเทียบกับคุณสมบัติที่คำนวณ — แยกความแตกต่างอย่างรวดเร็ว

• จัดเก็บ: `var x: Int = 0` — มีพื้นที่จัดเก็บจริง • คำนวณ: `var doubled: Int { x * 2 }` — คำนวณเมื่อเข้าถึง จึงไม่มีพื้นที่จัดเก็บ • ตัวสังเกต: แนบกับคุณสมบัติที่จัดเก็บไว้ — ตอบสนองต่อการเปลี่ยนแปลง ไม่สามารถเพิ่มตัวสังเกตให้คุณสมบัติที่คำนวณได้ เพราะคุณสมบัติเหล่านั้นมี `get`/`set` อยู่แล้ว

ข้อควรทราบด้านประสิทธิภาพ

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

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ตัวสังเกตคุณสมบัติใดเปิดให้เข้าถึงค่า **ก่อนหน้า** ได้

สรุป

ประเด็นสำคัญ: • คุณสมบัติที่จัดเก็บไว้เก็บค่าโดยตรง • `willSet` ทำงานก่อนจัดเก็บค่าใหม่ และมี `newValue` ให้ใช้ • `didSet` ทำงานหลังจากนั้น และมี `oldValue` ให้ใช้ • ตัวสังเกตจะไม่ทำงานระหว่าง `init` • เหมาะสำหรับผลข้างเคียง เช่น การอัปเดตส่วนติดต่อผู้ใช้ การบันทึกข้อมูล และการตรวจสอบความถูกต้อง ถัดไป: คุณสมบัติที่คำนวณ

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

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

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

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

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

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

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

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

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

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

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

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

  1. ตัวเริ่มต้นแบบสมาชิกและตัวเริ่มต้นแบบกำหนดเอง
  2. คุณสมบัติที่จัดเก็บและตัวสังเกตคุณสมบัติ
  3. คุณสมบัติที่คำนวณในโครงสร้าง
  4. เมธอดที่เปลี่ยนแปลงค่าและความหมายเชิงอรรถศาสตร์แบบคัดลอกเมื่อเขียน
← กลับไปที่ Swift Academy