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

ตัวเริ่มต้นและ deinit (คลาส)

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

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

ภาพรวม

บทเรียนนี้ครอบคลุมตัวเริ่มต้นแบบหลักเทียบกับแบบอำนวยความสะดวก ค่าปริยาย init? ที่อาจล้มเหลว และ deinit ของคลาส

พื้นฐานการเริ่มต้นโครงสร้าง

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

struct User {
    var name: String = "Guest"   // default value
    var age: Int

    // memberwise init is synthesized: User(name:age:)
}
let u1 = User(name: "Ada", age: 20)
let u2 = User(age: 0)            // uses default name
print(u1.name, u2.name)

ตัวเริ่มต้นหลัก

ตัวเริ่มต้นหลักรับรองว่าพร็อพเพอร์ตีแบบเก็บค่าทั้งหมดถูกกำหนดค่าก่อนนำไปใช้งาน

class Person {
    let name: String
    let id: Int

    // Designated initializer: fully initializes stored properties
    init(name: String, id: Int) {
        self.name = name
        self.id = id
    }
}
let p = Person(name: "Bob", id: 1)
print(p.name, p.id)

ตัวเริ่มต้นแบบอำนวยความสะดวก

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

class Rectangle {
    var width: Double
    var height: Double

    // Designated
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }

    // Convenience must call a designated initializer
    convenience init(square side: Double) {
        self.init(width: side, height: side)
    }
}
print(Rectangle(square: 3).width)

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

ใช้ init? กับข้อมูลนำเข้าที่อาจไม่ผ่านการตรวจสอบความถูกต้อง ผลลัพธ์จะเป็นค่าเลือกได้

struct Email {
    let value: String
    init?(_ raw: String) {
        guard raw.contains("@") else { return nil } // fail to initialize
        self.value = raw
    }
}
print(Email("a@b.com")?.value ?? "invalid")
print(Email("not email")?.value ?? "invalid")

ตัวทำลาย

มีเพียงคลาสเท่านั้นที่มี deinit ซึ่งจะถูกเรียกเมื่ออินสแตนซ์ถูกคืนพื้นที่ (ARC)

class TempResource {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Releasing resource", id) }
}
do {
    let r = TempResource(id: 42)
    print("Using", r.id)
} // r goes out of scope; ARC may call deinit here

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

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

สรุปทบทวน

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

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

บทเรียน “ตัวเริ่มต้นและ deinit (คลาส)” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ตัวเริ่มต้นและ deinit (คลาส)”

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

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

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

บทเรียน “ตัวเริ่มต้นและ deinit (คลาส)” ใช้เวลานานแค่ไหน

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

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

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

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

  1. โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น
  2. พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต
  3. ตัวเริ่มต้นและ deinit (คลาส)
← กลับไปที่ Swift Academy