Higher Order Function คืออะไร

January 29th, 2021

ฟังก์ชั่นในการเขียนโปรแกรมเป็นชุดคำสั่งที่มีไว้เพื่อทำงานบางอย่างใช่ไหมครับ เช่น print เป็น function ในการแสดงข้อความของ Python โดยปกติแล้วฟังก์ชั่นมักจะรับค่าข้อมูลบางอย่าง และสั่งการหรือคืนค่าข้อมูลตัวใหม่ออกมา นอกจากการรับข้อมูลนะครับ ในบางภาษาเราสามารถใส่ฟังก์ชั่นหรือคืนค่าฟังก์ชั่นออกมาได้ด้วยครับ

Higher Order Function

เป็นฟังก์ชั่นที่รับฟังก์ชั่นเข้ามาเป้น arguement หรือคืนค่าฟังก์ชั่นออกมา ตัวอย่างตามโค้ดด้านล่างครับ

def f_plus_one(x, f):
   return f(x + 1)

จะเห็นว่าเราเรียน f ที่เป็น parameter ของ f_plus_one ด้วย x+1 ในตัวอย่างนี้อาจจะไม่ได้เห็นประโยชน์ของมันมากนัก แต่ว่าการนำมาใช้จะอยู่ในตัวอย่างถัดไป

squared = list(map(lambda x: x**2, range(100)))

ในตัวอย่างนี้ squared จะเป็น list ของค่าทุกค่าใน range(100) กำลังสอง

ฟังก์ชั่นที่รับฟังก์ชั่นเข้ามามีประโยชน์อย่างมากในการทำ routing การจัดการข้อมูล (map, filter, reduce) ลดจำนวนการเขียน loop หรือ condition ไปได้มากเลยครับ

ใน Python ผมยังไม่เคยเห็นฟังก์ชั่นที่คืนค่าออกมาเป็นฟังก์ชั่นครับ แต่ว่ามักจะพบใน JavaScript เช่นการทำ debounce เพื่อป้องกันการส่ง request หลาย ๆ ครั้งขณะที่ยังพิมพ์ไม่เสร็จครรับ