เรียนภาษา Swift กับ ThaiSwiftClass.com ตอน Extension

Thai Swift Class บทนี้จะเรียนรู้เรื่อง การใช้ Extension กันนะครับ

Extension ใน Swift จะมีประโยชน์มากโดยเราจะทำให้ ประเภทของตัวแปร (type),structure หรือแม้แต่ class มีความสามารถเพิ่ม เติมขึ้นมาตามงานที่เราต้องการใช้ได้ ลองมาดูตัวอย่างกันก่อนครับ

 

ตัวอย่างแรก : ลองประกาศตัวแปร sName เป็น String มีค่า “Swift” แล้ว อยากลองใส่ .”hello()” ต่อท้ายดู

จะเห็นว่าเกิด error ขึ้น เพราะ String ไม่มี method หรือ property ชื่อ hello() อยู่เลย

ThaiSwiftClass Extension 1
ThaiSwiftClass Extension 1

 

ตอนนี้เราจะใช้ คำสั่ง extension มาต่อเติม hello() เพื่อเพิ่มความสามารถนี้เข้าไปอยู่ใน String

อธิบาย : เราใช้ extension นำหน้าด้วย ประเภทตัวแปร (Variable Type) , Struct หรือ Class แล้วตามด้วย { คำสั่งที่ต้องการเพิ่มเข้าไป }

โดย Hello() ที่เราสร้างขึ้นมานั้นก็เพื่อพิมพ์ค่าที่เก็บอยู่ในตัวแปรนั้นออกมาแสดง (ใช้ self เวลาต้องการแทนตัวแปร)

 

เมื่อเราลองกลับมาที่ sName ดูจะเห็นว่ามี method ใหม่เพิ่มเข้ามาชื่อ hello

ThaiSwiftClass Extension 2
ThaiSwiftClass Extension 2

 

กลับไปที่ extension แล้วเพิ่มคำอธิบาย method “///Say Hello to variable” ลงไป

ThaiSwiftClass Extension 3
ThaiSwiftClass Extension 3

 

จะสังเกตุว่าเราใส่ comment โดยใช้ /// (มี / สามอัน) ปกติ / สองครั้ง Swift ก็ถือเป็น comment ได้แล้วแต่การนำมาใช้อธิบายหัวข้อใน extension เราจะใช้ /// แทน

 

มาทดสอบ extension กับ Int กันบ้าง

เราอยากให้ String มารับค่าจาก Int ตรงๆ ซึ่งโดยปกตินั้นทำไม่ได้

ThaiSwiftClass Extension 4
ThaiSwiftClass Extension 4

 

จากนั้นใช้ extension เพิ่มความสามารถให้ Int แปลงตัวเลขให้เป็น String ได้

 

อย่าลืมใส่ comment /// ลงไปเพื่อง่ายต่อการเข้าใจภายหลัง

ThaiSwiftClass Extension 5
ThaiSwiftClass Extension 5

 

ผลการทำงาน ระบบจะพิมพ์ค่า ThaiSwiftClass Extension 13 ออกทางหน้าจอ

 

นำ extension มาใช้งานกับตัวแปรโครงสร้าง Struct

 

จากตัวอย่างจะเห็นว่า Struct Student นั้นเก็บรายละเอียดคร่าวๆของนักเรียนใว้ แต่ถ้าเรามี protocol GeneralFunction ที่ในนั้นเก็บ function ค้นหาเกรด (findGrade) อยู่เราจะเอามาใช้ด้วยกันได้เลยใหมใน Struct โดยไม่ต้องสร้าง function แยก เราจึงให้ extension มารับหน้าที่นี้ไป

ผลการทำงาน :

ThaiSwiftClass Extension 18

 

เราได้ใส่ method findGrade จาก Protocol เติมเข้าไปใน Struct Student แล้วต่อไปเราก็สามารถใช้ประโยชน์จาก Struct นี้ได้มากขึ้น (วิธีนี้เราก็สามารถที่จะนำไปใช้ได้กับ class ด้วยเหมือนกัน)

 

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

Leave a Reply