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

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

ทำความเข้าใจตัวเริ่มต้นแบบสมาชิกที่สร้างอัตโนมัติ และการเขียนตัวเริ่มต้นแบบกำหนดเอง

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

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

โครงสร้างของ Swift มี *ตัวเริ่มต้นแบบสมาชิก* ให้โดยอัตโนมัติ ซึ่งรับคุณสมบัติที่จัดเก็บไว้ทั้งหมด แต่คุณสามารถปรับแต่งหรือต่อยอดด้วยตรรกะของตัวเริ่มต้นเองได้

ตัวเริ่มต้นสมาชิกที่สร้างโดยอัตโนมัติ

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` ไม่จำเป็นต้องเขียน `init` เอง เพราะคอมไพเลอร์จัดเตรียมไว้ให้

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

```swift struct Circle { var radius: Double var area: Double init(radius: Double) { self.radius = radius self.area = .pi * radius * radius } } let c = Circle(radius: 5.0) ```

การคงตัวเริ่มต้นแบบสมาชิกไว้

การกำหนดตัวเริ่มต้นแบบกำหนดเองจะปิดการใช้งานตัวเริ่มต้นแบบสมาชิกที่สร้างขึ้นโดยอัตโนมัติ หากต้องการเก็บตัวเริ่มต้นทั้งสองแบบไว้ ให้ใส่ตัวเริ่มต้นแบบกำหนดเองไว้ในส่วนขยาย: ```swift struct Rect { var width: Double; var height: Double } extension Rect { init(square side: Double) { self.init(width: side, height: side) } } // Both Rect(width:height:) and Rect(square:) available ```

ค่าเริ่มต้นของคุณสมบัติ

```swift struct Config { var debug = false var maxRetries = 3 var timeout: TimeInterval = 30 } let c1 = Config() // all defaults let c2 = Config(debug: true) // memberwise with overrides ```

การส่งต่อการเริ่มต้นด้วย self.init

```swift struct Temperature { var celsius: Double init(celsius: Double) { self.celsius = celsius } init(fahrenheit: Double) { self.init(celsius: (fahrenheit - 32) / 1.8) } init(kelvin: Double) { self.init(celsius: kelvin - 273.15) } } ```

ตัวเริ่มต้นที่อาจล้มเหลว

```swift struct Percentage { let value: Double init?(_ value: Double) { guard (0...100).contains(value) else { return nil } self.value = value } } let p = Percentage(105) // nil ```

ตัวเริ่มต้นพร้อมการตรวจสอบความถูกต้อง

```swift struct Username { let value: String init?(_ raw: String) { let trimmed = raw.trimmingCharacters(in: .whitespaces) guard trimmed.count >= 3 else { return nil } self.value = trimmed } } ```

ตัวเริ่มต้นของโครงสร้างเทียบกับตัวเริ่มต้นของคลาส

ความแตกต่างสำคัญจากตัวเริ่มต้นของคลาส: • โครงสร้างสามารถใช้การส่งต่อด้วย `self.init()` ได้ • โครงสร้างไม่สืบทอดตัวเริ่มต้น (ไม่มี `super.init()`) • ต้องเริ่มต้นคุณสมบัติที่จัดเก็บไว้ทั้งหมดก่อนใช้งาน • ไม่มีคีย์เวิร์ด `required` หรือ `designated` / `convenience`

ภาพรวม init(from decoder:)

โครงสร้างที่สอดคล้องกับ `Decodable` จะได้รับตัวเริ่มต้นโดยอัตโนมัติ: ```swift struct User: Decodable { let name: String let age: Int } // Auto-synthesised init(from:) for JSON decoding let user = try JSONDecoder().decode(User.self, from: json) ```

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

คุณควรใส่ตัวเริ่มต้นแบบกำหนดเองไว้ที่ใด เพื่อคงตัวเริ่มต้นแบบสมาชิกที่สร้างขึ้นโดยอัตโนมัติไว้

สรุป

ประเด็นสำคัญ: • โครงสร้างจะได้รับตัวเริ่มต้นแบบสมาชิกจากคอมไพเลอร์โดยไม่ต้องเขียนเอง • ตัวเริ่มต้นแบบกำหนดเองในเนื้อหาของโครงสร้างจะปิดการใช้งานตัวเริ่มต้นแบบสมาชิก • วางตัวเริ่มต้นแบบกำหนดเองไว้ในส่วนขยายเพื่อเก็บตัวเริ่มต้นทั้งสองแบบไว้ • ใช้ `self.init()` เพื่อส่งต่อระหว่างตัวเริ่มต้น • ตัวเริ่มต้นที่อาจล้มเหลวจะคืนค่า `nil` เมื่อข้อมูลนำเข้าไม่ถูกต้อง ถัดไป: คุณสมบัติที่จัดเก็บไว้และตัวสังเกตคุณสมบัติ

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

บทเรียน “ตัวเริ่มต้นแบบสมาชิกและตัวเริ่มต้นแบบกำหนดเอง” ฟรีหรือไม่

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

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

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

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

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

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

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

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

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

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

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