เรียนภาษา Swift กับ ThaiSwiftClass ตอน การ ใช้งาน Computed Properties

ในบทที่ผ่านๆมาเราได้เรียนเรื่องการประกาศตัวแปรแบบต่างๆกันมาแล้ว ใน Swift เองยังมีการประกาศตัวแปรที่สามารถเพิ่มเงื่อนไขหรือเขียนข้อกำหนดต่างๆเข้าไปในตัวแปรได้อีก เรียกว่า Computed Properties

ใน Swift จะมี ตัวแปรแบบ Computed Properties คือการที่เราเพิ่มความสามารถให้กับตัวแปรที่ต้องการ โดยการใช้คำสั่ง get และ set เข้าไป ทำให้ลดการเขียนลงได้พอสมควรเพราะเงื่อนไขบางอย่างสามารถจบลงที่การเรียกใช้หรือตั้งค่าให้กับตัวแปรนั้นๆได้เลย  ลองดูตัวอย่างจาก class exchange_rate กันก่อน

ThaiSwiftClass Computed Properties getter setter in class 1
ThaiSwiftClass Computed Properties getter setter in class 1

 

ThaiSwiftClass Computed Properties getter setter in class 2
ThaiSwiftClass Computed Properties getter setter in class 2

 

จากตัวอย่าง  : class exchange_rate โดยจะแสดงอัตราแลกเปลี่ยนจากสกุลเงินไทยไปยังสกุลอื่นๆ โดยใช้ตัวแปร

dThaiBaht เป็นตัวแปรประเภท Double    เพื่อรองรับการคำนวนอัตราแลกเปลี่ยน

dUSDollar ,dEuro,dJapanYen เป็นตัวแปรสำหรับสกุลเงินของ US,Euro และญี่ปุ่นโดยมีการนำ get และ set มาใช้

get   คำสั่ง get จะถูกประมวลผลเมื่อตัวแปรถูกเรียกใช้งาน
set   คำสั้ง set จะถูกประมวลผลเมื่อตัวแปรถูกกำหนดค่าใหม่ลงไป

 

นำมาลองใช้งานดู

ThaiSwiftClass Computed Properties getter setter in class test
ThaiSwiftClass Computed Properties getter setter in class test

 

มาดูผลที่ได้

ThaiSwiftClass Computed Properties getter setter in class result
ThaiSwiftClass Computed Properties getter setter in class result

 

สรุปจากการทำงานของ get และ set ที่ได้จากตัวอย่าง (อ้างอิงแค่ตัวแปร dUSDollar เพราะที่เหลือทำงานเหมือนกัน)

1 เมื่อต้องการรู้สกุลเงินของ US (dUSDollar) ระบบจะใช้คำสั่ง get ในการเอาค่าสกุลเงินของไทยไปหารกับอัตราแลกเปลี่ยน(35 บาท / 1 ดอล)
2 เมื่อมีการเปลี่ยนแปลงค่าใน dUSDollar ระบบจะใช้คำสั่ง set ในการเอาค่าสกุลเงินของ US ไปคูณกับจำนวนเงินบาท

 

จะเห็นได้ว่าการใช้ Get,Set เหมือนเราสร้าง function ย่อยๆใส่ใว้ในตัวแปรเพื่อให้มันทำงานแบบอัตโนมัติได้เลยทีเดียว

นอกจากนี้แล้วเรายังสามารถเฝ้าดูการเปลี่ยนแปลงค่า(property observers) ที่เกิดขึ้นภายในตัวแปรได้อีก โดยใช้คำสั่ง willSet คือเมื่อตัวแปรกำลังจะถูกกำหนดค่าให้ กับ didSet คือเมื่อตัวแปรถูกกำหนดค่าลงไปแล้ว  ลองดูตัวอย่างกันครับ

ThaiSwiftClass Computed Properties getter setter willset didset
ThaiSwiftClass Computed Properties getter setter willset didset

 

willSet เงื่อนไขจะถูกประมวลผลก่อนกำหนดค่าให้ตัวแปร
didSet เงื่อนไขจะถูกประมวลผลเมื่อมีตัวแปรถูกกำหนดค่าใหม่ให้

 

 

ข้อจำกัดของการใช้งาน Computed Properties และ Property Observers ใน Swift

1.มี Get แล้ว ก็ต้องมี Set

ThaiSwiftClass Computed Properties Error 2 set get together
ThaiSwiftClass Computed Properties Error 2 set get together

 

2.ไม่สามารถใช้ get กับตัวตัวเองได้

ThaiSwiftClass Computed Properties Error cant get self 3
ThaiSwiftClass Computed Properties Error cant get self 3
ThaiSwiftClass Computed Properties Error cant get self
ThaiSwiftClass Computed Properties Error cant get self
ThaiSwiftClass Computed Properties Error cat get self 2
ThaiSwiftClass Computed Properties Error cat get self 2

 

3.ตอนใช้ Property Observers (willSet ,didSet) ไม่ใส่มาใช้คำสั่ง set ได้

ThaiSwiftClass Computed Properties Error cant set in observer
ThaiSwiftClass Computed Properties Error cant set in observer

 

4.จะใช้ get ก็ต้องมี return ทุกครั้ง

ThaiSwiftClass Computed Properties Error get must return
ThaiSwiftClass Computed Properties Error get must return

 

ผ่านไปสำหรับบทนี้นะครับ ลองเอาไปใช้งานดูมีประโยชน์อยู่พอสมควรและ Computed Properties นี้ก็ยังลดการใช้การ Function ได้เหมือนกัน

แนะนำติชมบทความเกี่ยวกับการเรียน Swift ได้ตลอดนะครับ ที่ thaiswiftclass@gmail.com และทาง https://www.facebook.com/thaiswiftclass

Leave a Reply