4

我正在学习 Mule Dev 1 课程,在模块内容和我在实践中看到的内容之间感到困惑。

模块内容指出:

“使用一系列函数时,首先执行链中的最后一个函数。”

所以

filghts orderBy $.price filter ($.availableSeats > 30) 

将“过滤然后 orderBy”。

但是,我看到这个声明:

payload.flights orderBy $.price filter $.price < 500 groupBy $.destination

实际上不会先执行 groupBy 。事实上,将 groupBy 放在其他任何地方都会引发错误(因为 groupBy 之后的输出模式已更改)。

关于为什么模块声明最后一个函数在显然不是这种情况时首先执行的任何想法?

谢谢!

4

1 回答 1

6

(orderBy、groupBy 等)的优先级相同。所以它会首先按价格排序,然后按价格过滤,最后按目的地分组。

这对于 dw 1 (mule 3.x) 和 dw 2 (mule 4.x) 是一样的。现在这与 DW 版本之间的区别在于,在 DW1 中,所有这些都曾经是语言运算符,但在 DW 2 中,只是使用中缀表示法调用的函数。所以这意味着您可以使用前缀表示法编写相同的内容

filter(
       orderBy(filghts, (value, index) -> value.price), 
                           (value, index) -> value.availableSeats > 30) 

只是为了向您展示这是该表达式的 AST。

在此处输入图像描述

于 2019-01-29T15:36:38.843 回答