多个 DataWeave 函数中的优先级
Precedence in multiple DataWeave functions
我正在学习 Mule Dev 1 课程,但在模块内容和我在实践中看到的内容之间感到困惑。
模块内容指出:
"When using a series of functions, the last function in the chain is executed first."
所以
filghts orderBy $.price filter ($.availableSeats > 30)
会"filter then orderBy".
但是,我看到这个声明:
payload.flights orderBy $.price filter $.price < 500 groupBy $.destination
实际上并没有先执行groupBy。事实上,将 groupBy 放在其他任何地方都会引发错误(因为更改 groupBy 后的输出架构)。
这里有关于为什么模块声明最后一个函数首先执行的任何想法,而事实显然并非如此?
谢谢!
(orderBy、groupBy 等)的优先级完全相同。
所以它会首先按价格排序,然后按价格过滤,最后按目的地分组。
这对于 dw 1 (mule 3.x) 和 dw 2 (mule 4.x) 是相同的。现在,这与 DW 版本之间的区别在于,在 DW1 中,所有这些都曾经是 lang 运算符,但在 DW 2 中,它们只是使用中缀表示法调用的函数。所以这意味着您可以使用前缀符号
来编写相同的内容
filter(
orderBy(filghts, (value, index) -> value.price),
(value, index) -> value.availableSeats > 30)
只是为了向您展示这是该表达式的 AST。
我正在学习 Mule Dev 1 课程,但在模块内容和我在实践中看到的内容之间感到困惑。
模块内容指出:
"When using a series of functions, the last function in the chain is executed first."
所以
filghts orderBy $.price filter ($.availableSeats > 30)
会"filter then orderBy".
但是,我看到这个声明:
payload.flights orderBy $.price filter $.price < 500 groupBy $.destination
实际上并没有先执行groupBy。事实上,将 groupBy 放在其他任何地方都会引发错误(因为更改 groupBy 后的输出架构)。
这里有关于为什么模块声明最后一个函数首先执行的任何想法,而事实显然并非如此?
谢谢!
(orderBy、groupBy 等)的优先级完全相同。 所以它会首先按价格排序,然后按价格过滤,最后按目的地分组。
这对于 dw 1 (mule 3.x) 和 dw 2 (mule 4.x) 是相同的。现在,这与 DW 版本之间的区别在于,在 DW1 中,所有这些都曾经是 lang 运算符,但在 DW 2 中,它们只是使用中缀表示法调用的函数。所以这意味着您可以使用前缀符号
来编写相同的内容filter(
orderBy(filghts, (value, index) -> value.price),
(value, index) -> value.availableSeats > 30)
只是为了向您展示这是该表达式的 AST。