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

การสอดคล้องตามเงื่อนไข

ทำให้ชนิดทั่วไปสอดคล้องกับโพรโทคอลตามเงื่อนไขด้วยส่วนคำสั่ง where

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

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

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

การสอดคล้องตามเงื่อนไขพื้นฐาน

```swift extension Array: Equatable where Element: Equatable { // Array is Equatable only when Element is Equatable } let a = [1,2,3] let b = [1,2,3] print(a == b) // true — works because Int is Equatable ```

ชนิดทั่วไปแบบกำหนดเอง

```swift struct Box { var value: T } extension Box: Equatable where T: Equatable { static func == (lhs: Box, rhs: Box) -> Bool { lhs.value == rhs.value } } print(Box(value: 42) == Box(value: 42)) // true ```

Hashable ตามเงื่อนไข

```swift extension Box: Hashable where T: Hashable { func hash(into hasher: inout Hasher) { hasher.combine(value) } } // Box is Hashable; Box is not ```

Codable ตามเงื่อนไข

```swift extension Box: Codable where T: Codable {} let box = Box(value: "hello") let data = try JSONEncoder().encode(box) // works — String is Codable ```

ประโยค where บนส่วนขยาย

```swift extension Collection where Element == Int { var sum: Int { reduce(0, +) } } print([1,2,3,4].sum) // 10 // This extension only applies to collections of Int ```

ข้อจำกัดหลายประการ

```swift extension Dictionary where Key: Comparable, Value: Equatable { func sortedByKey() -> [(Key, Value)] { sorted { $0.key < $1.key } } } ```

การสอดคล้องตามเงื่อนไขของโปรโตคอล

```swift protocol Printable { func prettyPrint() } extension Optional: Printable where Wrapped: Printable { func prettyPrint() { switch self { case .none: print("nil") case .some(let v): v.prettyPrint() } } } ```

การใช้การสอดคล้องตามเงื่อนไข

```swift let opt: Int? = 42 // If Int conformed to Printable: // opt.prettyPrint() // "42" // Standard usage: let nums = Optional([1,2,3]) // [1,2,3]? if let arr = nums, arr == [1,2,3] { ... } // Equatable via conditional ```

คำเตือนเกี่ยวกับการสอดคล้องย้อนหลัง

Swift 5.7+ จะแสดงคำเตือนเกี่ยวกับการสอดคล้องย้อนหลัง (การเพิ่มการสอดคล้องให้ชนิดข้อมูลจากโมดูลอื่น): ```swift extension String: SomeThirdPartyProtocol {} // ⚠️ retroactive ``` ทำเครื่องหมายด้วย `@retroactive` อย่างชัดเจนเมื่อเป็นการตั้งใจ

ตรวจสอบอย่างรวดเร็ว

คีย์เวิร์ดใดใช้เพื่อเพิ่มเงื่อนไขในส่วนขยายที่มีการสอดคล้องตามเงื่อนไขของโปรโตคอล

สรุป

ประเด็นสำคัญ: • `extension T: Protocol where Param: Constraint` — การสอดคล้องตามเงื่อนไข • อาร์เรย์, Optional, Result และชนิดอื่น ๆ ใช้แนวทางนี้กับ Equatable, Hashable และ Codable • ชนิดข้อมูลทั่วไปที่กำหนดเองก็ทำเช่นเดียวกันได้ • `where Element == Int` จำกัดให้ใช้ได้กับชนิดรูปธรรมเฉพาะ • การสอดคล้องย้อนหลังต้องใช้ `@retroactive` ใน Swift 5.7+ ถัดไป: ข้อกำหนดของ Self

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

บทเรียน “การสอดคล้องตามเงื่อนไข” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การสอดคล้องตามเงื่อนไข”

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

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

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

บทเรียน “การสอดคล้องตามเงื่อนไข” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การประกอบโพรโทคอลด้วย &
  2. การสอดคล้องตามเงื่อนไข
  3. ข้อกำหนด Self และการออกแบบ Equatable
  4. หลักการออกแบบโดยยึดโพรโทคอล
← กลับไปที่ Swift Academy