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

สร้างพร็อพเพอร์ตีแรปเปอร์แบบกำหนดเอง

ใช้งาน @propertyWrapper ร่วมกับ wrappedValue เพื่อห่อหุ้มตรรกะ

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

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

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

ไวยากรณ์พื้นฐาน

```swift @propertyWrapper struct Clamped { var wrappedValue: Int { didSet { wrappedValue = min(max(0,wrappedValue),100) } } init(wrappedValue: Int) { self.wrappedValue = min(max(0,wrappedValue),100) } } struct Gauge { @Clamped var level = 50 } var g = Gauge() g.level = 150 // clamped to 100 ```

ข้อกำหนดของ wrappedValue

ตัวห่อหุ้มพร็อพเพอร์ตีทุกตัวต้องกำหนด `wrappedValue` ซึ่งเป็นค่าที่ผู้ใช้ตัวห่อหุ้มอ่านและเขียน

ตัวห่อหุ้มพร็อพเพอร์ตีแบบทั่วไป

```swift @propertyWrapper struct Logged { private var value: T var wrappedValue: T { get { print("get"); return value } set { print("set to \(newValue)"); value = newValue } } init(wrappedValue: T) { value = wrappedValue } } ```

การใช้ตัวห่อหุ้ม

```swift struct Model { @Logged var name: String = "Default" } var m = Model() let n = m.name // prints "get" m.name = "Alice" // prints "set to Alice" ```

อาร์กิวเมนต์สำหรับตัวเริ่มต้นแบบกำหนดเอง

```swift @propertyWrapper struct Default { var wrappedValue: T init(wrappedValue: T) { self.wrappedValue = wrappedValue } init(_ default: T) { wrappedValue = default } } @Default(42) var count: Int ```

ตัวห่อหุ้มกับพร็อพเพอร์ตีที่จัดเก็บเทียบกับพร็อพเพอร์ตีที่คำนวณ

ตัวห่อหุ้มพร็อพเพอร์ตีจะเพิ่มพื้นที่จัดเก็บที่ซ่อนอยู่ (_wrappedValue) พร็อพเพอร์ตีที่มีตัวระบุประกอบเป็นเพียงรูปแบบย่อทางไวยากรณ์: ```swift @Clamped var level = 50 // Desugars to: var _level = Clamped(wrappedValue: 50) var level: Int { get { _level.wrappedValue } set { _level.wrappedValue = newValue } } ```

ตัวห่อหุ้ม UserDefaults

```swift @propertyWrapper struct UserDefault { let key: String; let defaultValue: T var wrappedValue: T { get { UserDefaults.standard.object(forKey: key) as? T ?? defaultValue } set { UserDefaults.standard.set(newValue, forKey: key) } } } @UserDefault(key:"theme",defaultValue:"light") var theme: String ```

ตัวห่อหุ้มที่ปลอดภัยต่อเธรด

```swift @propertyWrapper final class Atomic { private var value: T; private let lock = NSLock() var wrappedValue: T { get { lock.lock(); defer { lock.unlock() }; return value } set { lock.lock(); defer { lock.unlock() }; value = newValue } } init(wrappedValue: T) { value = wrappedValue } } ```

การรวมตัวห่อหุ้มในชนิดข้อมูล

```swift struct Settings { @Clamped var volume = 50 @UserDefault(key:"username",defaultValue:"") var username: String @Logged var debugMode = false } ```

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

พร็อพเพอร์ตีที่จำเป็นในชนิด `@propertyWrapper` ทุกชนิดคืออะไร

ทบทวน

ประเด็นสำคัญ: • `@propertyWrapper` + `wrappedValue` = ตัวห่อหุ้มพร็อพเพอร์ตีอย่างน้อยที่สุด • ตัวห่อหุ้มจะเพิ่มพื้นที่จัดเก็บ `_name` ที่ซ่อนอยู่ • ตัวห่อหุ้มแบบทั่วไปทำงานกับชนิด T ใดก็ได้ • การใช้งานทั่วไป: การจำกัดค่า การบันทึกข้อมูล UserDefaults และความปลอดภัยต่อเธรด • อาร์กิวเมนต์ตัวเริ่มต้นแบบกำหนดเองช่วยให้กำหนดค่าได้ ถัดไป: ค่าที่ฉาย

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

บทเรียน “สร้างพร็อพเพอร์ตีแรปเปอร์แบบกำหนดเอง” ฟรีหรือไม่

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

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

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

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

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

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

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

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

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

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

  1. สร้างพร็อพเพอร์ตีแรปเปอร์แบบกำหนดเอง
  2. ค่าที่ฉายด้วย $binding
  3. @Published และการสังเกตการณ์ใน Combine
  4. การประกอบพร็อพเพอร์ตีแรปเปอร์หลายรายการ
← กลับไปที่ Swift Academy