เรียนเขียนโปรแกรมบนไอโฟนด้วยภาษา Swift กับ ThaiSwiftClass.com ตอน – การใช้คำสั่ง guard

ก่อนจะไปพบกับบทความแรกของ ThaiSwiftClass.com ก็ต้องขอสวัสดีปีใหม่กับมิตรรักชาวสวิฟท์ทุกท่าน 🙂 ไปเที่ยวไหนกันมาบ้างครับ? สำหรับผมก็คิดบทความ ชุดคำสั่งใหม่ๆสำหรับใช้สวิฟท์มาฝากกันครับ

มาเริ่มตอนแรกต้อนรับปีใหม่กันเลย เป็นเรื่องราวของการใช้งาน guard (การ์ด) ใน Swift 2.0 ที่สามารถจะนำมาใช้ตรวจสอบเงื่อนไขได้แทน if else ได้อย่างดีเลยทีเดียว ลองไปดูตัวอย่างกันนะครับ

เคยเจอเหมือนกันที่ต้องใช้ if else ตรวจสอบอะไรวุ่นวายแบบนี้

หรือที่เขาเรียนกันว่า Pyramid of Doom คือแทบจะผูกเงื่อนไขซ้อนๆกันไป

แต่ตอนนี้เรามีผู้ช่วยใหม่ที่จะทำให้โค๊ดดูง่ายขึ้นกว่าเดิม ให้เราลองเปลี่ยนมาใช้ guard กัน

จะเห็นได้ว่าเงื่อนไขแต่ละอย่างจะถูกจับแยกออกมาให้ดูง่ายขึ้น

 

ลองมาดูโครงสร้างของ guard ว่ามีที่มาที่ไปยังไง

guard ตรวจสอบเงื่อนไขเป็นจริง

  where โดยตรวจสอบเงื่อนไขอื่นๆร่วมไปด้วย

  else { เมื่อเงื่อนไขไม่เป็นจริงให้ทำอะไร จากนั้นต้องจบด้วย

               return (เมื่อใช้งานใน function)

               throw Errortype

               break (เมื่อใช้งานใน switch)

               exit(1) (เมื่อใช้งานทั่วไป)

}

ชุดคำสั่งทำงานต่อไปเมื่อเงื่อนไขเป็นจริง

**ถ้าเงื่อนไขไม่เป็นจริงระบบจะทำงานที่ else เสร็จแล้วจะไม่ทำงานที่เหลือหลังจากนั้นอีกเลย

 

ข้อดีของ guard อีกข้อนึงคือเมื่อเราทำ optional binding เราสามารถนำตัวแปรนั้นไปใช้ต่อได้ ลองดูตัวอย่างต่อไปครับ

ผลของการทำงาน

Optional(“Ant”)

Ant

จะเห็นได้ว่าการทำงานกับ Dictionary และอีกหลายๆอย่างใน Swift (เช่นพวก TextBox) จำเป็นต้องใช้ optional binding หรือ การใช้ “if let…” เพื่อตรวจสอบว่าค่าที่ได้มานั้นไม่ใช้ nil และสามารถนำไปใช้ต่อได้

 

แต่จากตัวอย่าง เราจะไม่สามารถนำ sCheck ที่ได้มาไปใช้หลังจากจบ if else ไปใช้ต่อได้อีกเพราะถือว่าจบการทำงานของ optional binding แล้ว

swift optional binding after if

 

ถ้าลองเปลี่ยนมาใช้  guard ดูบ้างล่ะ?

ผลการทำงาน

sCheck = Ant

 

ก็ผ่านไปแล้วอีกหนึ่งบทเรียนจาก ThaiSwiftClass ยังไงลองเอาไปใช้ดูกันนะครับ ได้ผลดียังไงก็มาบอกหรือแนะนำกันได้ครับ

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

Leave a Reply