Functional programming เป็น paradigms หรือแนวทางการเขียนโปรแกรมที่มุ่งเน้นการใช้ฟังก์ชันเป็นส่วนหนึ่งของโค้ด โดยในสไตล์นี้เรามักจะเน้นที่การคำนวณค่าผลลัพธ์จากข้อมูลที่ได้รับ แทนที่จะเป็นการเปลี่ยนแปลงสถานะของข้อมูล หรือทำการส่งmemoization และการทำงานแบบไม่มีสถานะ (Stateless) การเขียนโปรแกรมในแบบฟังก์ชันมีข้อดีหลายประการ เช่น การทำให้โค้ดอ่านง่าย, สามารถทดสอบได้ง่าย, และทำให้สามารถนำกลับมาใช้ใหม่ได้ดี
ในบทความนี้ เราจะพาไปสำรวจการใช้ Functional programming ในภาษา Swift ด้วยตัวอย่างโค้ดที่ทำให้เข้าใจได้ง่าย พร้อมยกตัวอย่าง use case ที่เกี่ยวข้องในชีวิตจริง
ก่อนที่เราจะลงมือเขียนโค้ดกัน มาทำความเข้าใจกันสั้นๆ เกี่ยวกับแนวคิดพื้นฐานของ Functional programming กันเล็กน้อย
1. First-Class Functions: ฟังก์ชันในภาษา Swift เป็น First-Class Citizens ซึ่งหมายความว่า คุณสามารถส่งฟังก์ชันเป็นอาร์กิวเมนต์ให้กับฟังก์ชันอื่น คืนค่าฟังก์ชันจากฟังก์ชัน และเก็บฟังก์ชันในตัวแปร 2. Higher-Order Functions: ฟังก์ชันที่รับฟังก์ชันอื่นเป็นพารามิเตอร์ หรือคืนค่าฟังก์ชัน ต้องพูดถึงในบทนี้ เช่น ฟังก์ชัน `map`, `filter`, และ `reduce` ที่เราใช้ในการประมวลผลคอลเลกชันต่างๆ 3. Immutability: ข้อมูลจะไม่เปลี่ยนแปลง (immutable) ซึ่งช่วยลดข้อผิดพลาดที่เกิดจากการแก้ไขข้อมูล ไม่ว่าเราจะทำการดำเนินการใดจะต้องสร้างข้อมูลใหม่แทน
มาตัวอย่าง code กันดีกว่า! เราจะเขียนโปรแกรมที่ประกอบไปด้วยฟังก์ชันต่างๆ ที่ใช้แนวทาง Functional programming ในภาษา Swift
การใช้ฟังก์ชัน `map`
ฟังก์ชัน `map` ใช้สำหรับทำให้แต่ละค่าของคอลเลกชันในอาร์เรย์เปลี่ยนแปลง โดยฟังก์ชันนี้จะคืนค่าอาร์เรย์ใหม่ที่มีขนาดเดียวกัน
ในตัวอย่างข้างต้น เรามีข้อมูลในอาร์เรย์ `numbers` แล้วใช้ `map` ในการทุกตัวเลขในอาร์เรย์ให้อยู่ในรูปแบบที่สองเท่า โดยผลลัพธ์ที่ได้กลับเป็นอาร์เรย์ใหม่ที่ชื่อว่า `doubledNumbers`
การใช้ฟังก์ชัน `filter`
`filter` ใช้สำหรับคัดเลือกค่าที่符合เงื่อนไขจากอาร์เรย์ให้เหลืออยู่ในอาร์เรย์ใหม่นั้น
ในตัวอย่างนี้ เราใช้ฟังก์ชัน `filter` เพื่อเลือกเฉพาะตัวเลขที่เป็นเลขคู่จากอาร์เรย์ `numbers` ผลลัพธ์ที่เราได้คือ `evenNumbers` ที่มีแค่เลขคู่เท่านั้น
การใช้ฟังก์ชัน `reduce`
ฟังก์ชันนี้จะทำการประมวลผลค่าในอาร์เรย์และส่งค่าผลลัพธ์ออกมาเป็นตัวเลขเดียว
ที่นี่เราใช้ `reduce` เพื่อหาผลรวมของตัวเลขทั้งหมดในอาร์เรย์ `numbers` โดยเริ่มต้นที่ 0 แล้วทำการบวกเลขทีละตัวจนหมดอาร์เรย์
Functional programming สามารถนำไปใช้ในหลายๆ สถานการณ์ โดยเฉพาะในการจัดการข้อมูล เช่น การแสดงผลข้อมูล หรือการประมวลผลข้อมูลขนาดใหญ่
Example 1: การสร้างระบบยืนยันตัวตน
ในระบบยืนยันตัวตนที่ต้องการตรวจสอบผู้ใช้ เราอาจจะเก็บข้อมูลผู้ใช้ไว้ในอาร์เรย์ และใช้ `filter` เพื่อหาผู้ใช้งานที่ถูกต้องตามเงื่อนไข
Example 2: การจัดการคิวงานในแอปพลิเคชัน
ระบบที่ต้องมีการจัดการการทำงานของคิว โดยสามารถให้ผู้ใช้ส่งคำสั่งและดำเนินการตามฟังก์ชัน
Functional programming เป็นแนวทางที่มีประสิทธิภาพในการสร้างโปรแกรมที่เรียบง่ายและตอบสนองได้ดี โดยเฉพาะเมื่อใช้งานกับภาษา Swift ที่สนับสนุนการเขียนโปรแกรมอย่างมีประสิทธิภาพ สิ่งที่เราได้เรียนรู้ในวันนี้เกี่ยวกับฟังก์ชันต่างๆ ในที่นี้จะช่วยให้คุณสามารถนำไปประยุกต์ใช้ในโปรแกรมจริงได้
ถ้าคุณมีความสนใจในการศึกษาด้านการเขียนโปรแกรมมากขึ้น คุณสามารถสมัครเรียนที่ EPT (Expert-Programming-Tutor) เพื่อพัฒนาทักษะด้านการเขียนโปรแกรมในภาษา Swift การเรียนที่ EPT จะทำให้คุณเติบโตในสายอาชีพและพัฒนาทักษะที่จำเป็นต่อการทำงานในอนาคต!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM