พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต
กำหนดพร็อพเพอร์ตีที่จัดเก็บและคำนวณ สร้างพร็อพเพอร์ตีคำนวณแบบอ่านอย่างเดียวและแบบ get/set และตอบสนองต่อการเปลี่ยนแปลงด้วยตัวสังเกต willSet/didSet
พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น
- พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต
- ตัวเริ่มต้นและ deinit (คลาส)