เรียนเขียนโปรแกรมบนไอโฟนด้วยภาษา Swift กับ ThaiSwiftClass.com ตอน Closure

สำหรับบทนี้เราจะมารู้จักกับการใช้งานฟังก์ชั่นในสวิฟท์ได้หลายรูปแบบและหลากหลายมากขึ้น ก่อนอื่นเราลองมาดูการประกาศฟังก์ชั่นทั่วๆไปก่อนนะครับ (*สำหรับคนที่อยากทบทวนเรื่องฟังก์ชั่นกดตรงนี้

 

จากตัวอย่างข้างบนเราสร้างฟังก์ชั่น areacheck เพื่อคำนวนพื้นที่โดยรับ 3 พารามิเตอร์ และจะส่งผลการคำนวนออกเป็น Double จากนั้นให้ ตัวแปร getArea มารับค่าจากฟังก์ชั่นตามปกติ

มาลองดูการประกาศตัวแปรให้เป็นฟังก์ชั่นดูบ้าง

 

 

จะเห็นว่า areacheck2 นั่นประกาศแบบตัวแปรทั่วไป แต่ถ้าเราแทนที่ฟังก์ชั่นโดยไม่ใส่พารามิเตอร์ใดๆลงไป areacheck2 ก็จะกลายเป็นฟังก์ชั่นที่มีคุณสมบัติเหมือน arercheck ทันที

 

 Closure (โคลส’เชอะ)  คืออะไร?

Closures คือการที่โครงสร้างฟังก์ชั่นแบบนึงที่นำไปใช้ได้ทุกที่ที่ต้องการ ไม่ว่าจะไปอยู่ในตัวแปร หรือไปซ้อนอยู่ในพารามิเตอร์ของฟังก์ชั่นอื่นๆ โดยมีรูปแบบดังนี้

{(parameter) -> return type in statement }

ลองดูตัวอย่างการใช้งาน Ex.1

 

ตัวแปร sArea_ จะกลายเป็นฟังก์ชั่นที่รองรับพารามิเตอร์แบบ Double แล้ว return type เป็น String โดยเราสามารถนำฟังก์ชั่น areacheck จากตัวอย่างแรกมาใส่เป็นพารามิเตอร์ได้

 

ตัวอย่างการใช้งาน Ex.2

 

จาก Ex.2 ประกาศโครงสร้างตัวแปรเอาใว้ก่อน แล้วค่อยมาทำงานทีหลังก็ได้

 

Ex.3 เรายังสามารถใช้แทนพารามิเตอร์ด้วย $0

 

Ex.4 แบบไม่ต้องมีพารามิเตอร์ใดๆ สามารถนำไปใช้งานได้เลย

 

Ex.5 นำไปใช้กับ Array ด้วย method .map

ผลที่ได้จาก Ex.5 [“hello Peter”, “hello Evan”, “hello Dimitri”]

เนื่องจาก .map จะไล่ส่ง hello ไปทีละ element ที่อยู่ใน array ด้วยการแทนค่าลงใน $0

 

Ex.5.1 เพิ่มเติมกับการใช้งาน Closure ใน Array

ผลที่ได้จาก Ex.5.1 Multiply by 5 = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]

 

Ex.6 ลองนำไปใช้กับ Dictionary

ผลที่ได้จาก Ex.6 OneZeroZero 

**การที่เราดึงค่าจาก  Dictionary มานั้น Swift จะมองเป็น Optional เสมอ เพราะฉนั้นต้องใช้ “!” เพื่อ unwrap ค่าออกมาด้วยครับ
ลองนำไปฝึกใช้งานดูครับ
แนะนำติชมได้ตลอดนะครับ ที่ thaiswiftclass@gmail.com และทาง https://www.facebook.com/thaiswiftclass

Leave a Reply