Class & Struct
นอกจาก type พื้นฐานที่ Swift มีมาให้แล้ว นอกจาก Enum ที่เราสามารถสร้าง type ใหม่ได้แล้ว ยังมี Class กับ Struct อีกที่เราสามารถนำมาสร้าง type ใหม่ได้
ในบางครั้งเราต้องการเก็บข้อมูลที่เกี่ยวข้องกันหลายประเภทไว้ด้วยกัน เนื่องจาก type มาตรฐานไม่สามารถทำได้ เราจึงต้องประกาศ type ใหม่ของเราเอง
เช่น เราต้องการ type ใหม่เพื่อเก็บข้อมูล user หนึ่งคน ซึ่งอาจประกอบไปด้วย ชื่อ นามสกุล อายุ ส่วนสูง และอื่น ๆ ถ้าเราใช้ type มาตรฐาน จะกลายเป็นว่าเราจะต้องมีตัวแปรมากมาย ซึ่งจะทำให้โค้ดของเราจัดการ, แก้ไข หรืออ่านได้เข้าใจยาก
การประกาศ Struct และ Class
ทั้ง Struct และ Class เราสามารถมี store properties ในการเก็บค่าได้แบบนี้
ในการสร้าง instance ของ Struct และ Class เราสามารถทำได้แบบนี้
การอ้างถึง properties จะใช้ .
ในการอ้าง
Struct จะมี initializer มาให้โดยมี argument เท่ากับ properties ที่มีเรียงตามลำดับที่ประกาศ ในกรณีที่ต้องการ initial ด้วยค่าอื่นเราสามารถทำได้เลย แบบนี้
ทำให้เราไม่จำเป็นต้องกำหนดค่า default ตอนประกาศ Struct ได้
ซึ่ง Class ไม่สามารถทำได้เนื่องจากไม่มี initializer ให้ ถ้าเราเขียนแบบนี้จะ error
เราจึงต้องเขียน initializer เองแบบนี้
ทั้ง Struct และ Class สามารถมี method (ฟังก์ชั่น) ได้ทั้งคู่
ทั้ง Struct และ Class สามารถมี compute properties ได้
นอกจาก Struct กับ Class จะต่างกันที่ value กับ refence type แล้ว ยังมีความแตกต่างอย่างอื่นอีก ที่มีเฉพาะใน Class ดังนี้
ความสามารถในการ inherit จาก parent
การใช้ deinit ในการ deinitialize
การมีมากกว่า 1 reference ชี้มาที่ instance
type casting เป็น parent หรือ subclass (แน่นอน เพราะว่า Struct ไม่สามารถ inherit ได้แบบ class)
Last updated