多个 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。