[英]Dynamic function call in mule 4
我有多種功能:
fun testadd(payload) =
({
addition: payload.value1 as Number + payload.value2 as Number
})
fun testsub(payload) =
({
substraction: payload.value1 as Number - payload.value2 as Number
})
fun testmultiply(payload) =
({
multiplication: payload.value1 as Number * payload.value2 as Number
})
我想根據“操作”屬性/元素的值動態調用 function。 假設如果 "Operation" = "testadd"然后調用testadd function,如果 "Operation" = "testsub"然后調用testsub function
輸入:
{
"value1" : 10,
"value2" : 20,
"Operation" : "testadd"
}
這里的另一種方法是使用 function 重載和文字類型。 例如:
%dw 2.0
output json
fun binOp(a, b, op : "add") = a + b
fun binOp(a, b, op : "sub") = a - b
fun binOp(a, b, op : "mul") = a * b
---
binOp(10, 20, "add")
DataWeave 將根據op
參數的值調用正確的 function。
由於 DataWeave 中的函數被命名為lambda ,您可以將它們轉換為 lambda,將它們分配為 object 的值並使用鍵作為名稱。
例子:
%dw 2.0
output application/json
var functions={
testadd: (payload) -> {
addition: payload.value1 as Number + payload.value2 as Number
},
testsub: (payload) -> {
substraction: payload.value1 as Number - payload.value2 as Number
}
}
---
functions[payload.Operation](payload)
Output(用於問題中的輸入):
{
"addition": 30
}
或者,您可以將函數作為函數,並在 object 中按名稱引用它們:
%dw 2.0
output application/json
fun testadd(payload) = {
addition: payload.value1 as Number + payload.value2 as Number
}
fun testsub(payload) = {
substraction: payload.value1 as Number - payload.value2 as Number
}
var functions={
testadd: testadd,
testsub: testsub
}
---
functions[payload.Operation](payload)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.