Приоритет в нескольких функциях DataWeave - PullRequest
0 голосов
/ 29 января 2019

Я прохожу курс Mule Dev 1 и нахожусь в тупике между содержанием модуля и тем, что я вижу на практике.

Содержимое модуля утверждает, что:

"При использованииряд функций, последняя функция в цепочке выполняется первой. "

Так что

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

будет" фильтровать затем orderBy ".

Однако я вижучто этот оператор:

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

на самом деле НЕ выполняет groupBy первым.Фактически, размещение groupBy в любом другом месте приводит к ошибке (поскольку схема вывода после groupBy изменяется).

Любые мысли о том, почему модуль сообщает, что последняя функция выполняется первой, когда это явно недело?

Спасибо!

1 Ответ

0 голосов
/ 29 января 2019

Приоритет для всех одинаковый (orderBy, groupBy и т. Д.).Таким образом, он сначала выполнит заказBy по цене, затем отфильтрует его по цене и, наконец, сгруппируетBy.

Это то же самое для dw 1 (мул 3.x) и dw 2 (мул 4.x).Теперь разница между версиями DW заключается в том, что в DW1 все это раньше было операторами lang, а в DW 2 - просто функции, которые вызываются с использованием инфиксной записи.Таким образом, это означает, что вы можете просто написать то же самое, используя префиксную нотацию

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

Просто чтобы показать вам, что это AST этого выражения.

enter image description here

...