ประเภทของ initializers ใน Swift

May 06 2023
ใน Swift initializers เป็นเมธอดพิเศษที่ถูกเรียกใช้เมื่อมีการสร้างอินสแตนซ์ของคลาส struct หรือ enum ใช้เพื่อตั้งค่าสถานะเริ่มต้นของอินสแตนซ์ และสามารถใช้พารามิเตอร์เพื่อปรับแต่งกระบวนการเริ่มต้นได้

ใน Swift initializers เป็นเมธอดพิเศษที่ถูกเรียกใช้เมื่อมีการสร้างอินสแตนซ์ของคลาส struct หรือ enum ใช้เพื่อตั้งค่าสถานะเริ่มต้นของอินสแตนซ์ และสามารถใช้พารามิเตอร์เพื่อปรับแต่งกระบวนการเริ่มต้นได้

มี initializers สองประเภทใน Swift: initializers ที่กำหนดและ initializers อำนวยความสะดวก มาดูกันดีกว่าว่าแต่ละตัวต่างกันอย่างไร

Initializers ที่กำหนด

initializers ที่กำหนดเป็นวิธีหลักในการเริ่มต้นอินสแตนซ์ใหม่ของคลาส struct หรือ enum พวกเขามีหน้าที่รับผิดชอบในการเริ่มต้นคุณสมบัติทั้งหมดของอินสแตนซ์ และต้องเรียก initializer ที่กำหนดของซูเปอร์คลาสก่อนดำเนินการดังกล่าว

นี่คือตัวอย่างของ initializer ที่กำหนดสำหรับPersonคลาสอย่างง่าย:

class Person { 
    let name: String 
    let age: Int

    init(name: String, age: Int) { 
        self.name =name self.age = age 
    } 
}

Initializers อำนวยความสะดวก

initializers สะดวกคือ initializers รองที่ให้ทางลัดเพื่อเตรียมใช้งานอินสแตนซ์ของคลาส โครงสร้าง หรือ enum พวกเขาต้องเรียก initializer ที่กำหนดของคลาสเดียวกันก่อนที่จะทำอย่างอื่น ในระยะสั้นเราใช้มันเพื่อความสะดวกของเราในการเริ่มต้น

ต่อไปนี้เป็นตัวอย่างของเครื่องมือเริ่มต้นที่สะดวกสำหรับPersonชั้นเรียน:

class Person { 
    let name: String 
    let age: Int 
    init(name: String, age: Int) { 
        self.name =name 
        self.age = age 
    } 

    convenience init(name: String) { 
        self.init(name: name, age: 0) 
    } 
}

บทสรุป

โดยสรุป initializers ที่กำหนดเป็นวิธีหลักในการเริ่มต้นอินสแตนซ์ใหม่ของคลาส โครงสร้าง หรือ enum และมีหน้าที่รับผิดชอบในการเริ่มต้นคุณสมบัติทั้งหมดของอินสแตนซ์ ตัวเริ่มต้นที่สะดวกมีทางลัดเพื่อเริ่มต้นอินสแตนซ์ด้วยชุดของพารามิเตอร์เฉพาะ และต้องเรียกตัวเริ่มต้นที่กำหนดไว้ในคลาสเดียวกันก่อนที่จะดำเนินการอย่างอื่น

เมื่อเข้าใจความแตกต่างระหว่าง initializers ที่กำหนดและเครื่องมืออำนวยความสะดวก คุณจะสามารถเขียนโค้ดที่มีประสิทธิภาพและประสิทธิผลมากขึ้น และสร้างอินสแตนซ์ของคลาส โครงสร้าง และ enums ของคุณได้ง่ายขึ้น

โปรดปรบมือและติดตามหากคุณชอบโพสต์นี้