Function.Invoke เรียกใช้ฟังก์ชันโดยส่งรายการอาร์กิวเมนต์เป็นพารามิเตอร์ ใช้สำหรับการเรียกฟังก์ชันแบบไดนามิก
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| function | function | ฟังก์ชันที่ต้องการเรียกใช้ (เช่น Record.FieldNames, List.Sum, Text.Combine) |
| args | list | รายการ (list) ที่ประกอบด้วยอาร์กิวเมนต์ที่ต้องการส่งให้ฟังก์ชัน |
Function.Invoke(function, args) ใช้เรียกใช้ฟังก์ชันแบบไดนามิก โดยส่งฟังก์ชันเป้าหมายและรายการอาร์กิวเมนต์ไปยังฟังก์ชันนี้
เพื่อให้เข้าใจชัดเจน ส่วนมากการเรียกฟังก์ชันตรงๆ เราทำได้เลย เช่น List.Sum({1,2,3}) แต่ถ้าเราต้องการให้โปรแกรมตัดสินใจว่าจะใช้ฟังก์ชันไหน ตามเงื่อนไขที่เปลี่ยนไป ก็จะใช้ Function.Invoke ช่วยเรียกฟังก์ชันแบบไดนามิก
ที่เจ๋งคือ Function.Invoke ทำให้คุณส่งอาร์กิวเมนต์ไปหลายตัวในรูปแบบรายการได้ ไม่ต้องเขียนอาร์กิวเมนต์ทีละตัว เหมาะมากสำหรับ higher-order functions และการสร้าง wrapper logic ครับ 😎
เรียกฟังก์ชัน Record.FieldNames โดยส่งเรคอร์ด MyRecord ผ่านรายการ {MyRecord} ผลลัพธ์คือรายชื่อฟิลด์ทั้งหมด
Function.Invoke ส่ง argument สองตัว: รายการคำและตัวคั่น เหมือนกับ Text.Combine(Words, Separator)
ตัวอย่างการใช้ Function.Invoke เพื่อเลือกฟังก์ชันแบบไดนามิก ตามค่าตัวแปร Operation
Function.Invoke(List.Sum, {Numbers}) มีผลเหมือน List.Sum(Numbers) แต่เรียกไดนามิก
ถ้ารู้ฟังก์ชันแน่นอน ให้เรียกตรงๆเลยจะชัดเจนกว่า แต่ถ้าต้องเลือกฟังก์ชันตามเงื่อนไข จึงใช้ Function.Invoke
ใช่ args ต้องเป็น list เสมอ แม้ว่าฟังก์ชันจะมี argument ตัวเดียว ก็ต้องใส่ {argument} ในรูปแบบรายการ
ได้ แต่ต้องใส่ argument ในลำดับที่ถูกต้อง ถ้าไม่ใช้ optional argument ก็ไม่ต้องใส่ในรายการ
Function.Invoke มีมาตั้งแต่ Power Query 2016 ขึ้นไป
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Function.Invoke จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Function.From ใช้เพื่อแปลงฟังก์ชันที่รับเฉพาะลิสต์เดียว (unary function) ให้กลายเป็นฟังก์ชันที่รับพารามิเตอร์แยกกัน
Function.InvokeAfter เรียกใช้ฟังก์ชันหลังจากรอเวลาที่กำหนด นำไปใช้ในการควบคุมความเร็วเรียกข้อมูล API หรือเพิ่มความล่าช้าระหว่างการประมวลผล
Expression.Evaluate ใช้สำหรับประเมินผลนิพจน์ M ที่เก็บไว้เป็นข้อความ โดยสามารถระบุตัวแปรและฟังก์ชันที่ใช้ได้ในสภาพแวดล้อม ทำให้สามารถเขียนโค้ด M แบบไดนามิก
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่