Swift Class vs Struct ต่างกันยังไง?
class vs struct ต่างกันยังไง? Reference type คือ? Value type คือ?
Class
Class เป็น Reference type
Struct
Struct เป็น Value type
เมื่อรู้แล้วว่า Class เป็น Reference type และ Struct เป็น Value type แล้ว Reference type กับ Value type คืออะไร ต่างกันยังไง? เดี๋ยวผมจะยกตัวอย่างให้ดูนะครับ เราไปดูกันเลย !!
Example: Reference type
เรามีเบอร์เพื่อนที่บันทึกไว้ในโทรศัพท์ของเรา วันนึงเพื่อนเราโทรมาบอก เห้ยเอ็ง ข้าเปลี่ยนเบอร์แล้วนะ สิ่งที่เราทำแบบ Reference type คือ
- เราก็หยิบโทรศัพท์ขึ้นมาแล้วหาชื่อเพื่อนที่บันทึกไว้
- ลบเบอร์เก่าเพื่อนออกแล้วใส่เบอร์ใหม่เข้าไปแทน
เราลองมาดู Code กันบ้าง
class Contact {
var phoneNumber: String?
}var day1 = Contact()
day1.phoneNumber = "099-999-9999"var day30 = day1
day30.phoneNumber = "088-888-8888"print(day1.phoneNumber)
print(day30.phoneNumber)// ผลลัพท์ที่ได้
// 088-888-8888
// 088-888-8888
จาก Code ด้านบนจะเห็นว่า เบอร์เก่าหายไปเป็นที่เรียบร้อยแล้วววววว !!! ถ้าเพื่อนมันโทรมาบอกว่า เห้ยเอ็ง ข้ากลับมาใช้เบอร์เก่าแล้วนะ เราคงต้องถามเพื่อนอีกว่าเบอร์เก่าเอ็งเบอร์อะไรนะเพื่อน
Example: Value type
เรามีเบอร์เพื่อนที่บันทึกไว้ในโทรศัพท์ของเรา วันนึงเพื่อนเราโทรมาบอก เห้ยเอ็ง ข้าเปลี่ยนเบอร์แล้วนะ สิ่งที่เราทำแบบ Value type คือ
- เราก็หยิบโทรศัพท์ขึ้นมาแล้วหาชื่อเพื่อนที่บันทึกไว้
- เพิ่มเบอร์ใหม่เข้าไปอีกเบอร์โดยที่เบอร์เก่ายังอยู่
เรามาดู Code กันบ้าง
struct Contact {
var phoneNumber: String
}var day1 = Contact(phoneNumber: "099-999-9999")var day30 = day1
day30.phoneNumber = "088-888-8888"print(day1.phoneNumber)
print(day30.phoneNumber)// ผลลัพท์ที่ได้
// 099-999-9999
// 088-888-8888
จาก Code ด้านบนจะเห็นว่า เบอร์เก่ายังอยู่วววววววว !!! ถ้าเพื่อนมันโทรมาบอกว่า เห้ยเอ็ง ข้ากลับมาใช้เบอร์เก่าแล้วนะ เราคงตอบกลับไปว่า เออโอเคร !
สรุป
- Class เอาแต่ของใหม่เอ๊าะๆ
- Struct เหมาหมด
จบแล้วนะครับใครหายงงแล้วยกมือออออ ! หวังว่าจะมีประโยชน์กับทุกคนนะครับ หากมีข้อผิดพลาดประการใด ผมต้องขออภัยด้วยนะครับ