Где точно использовать круглые скобки "()" в языке переплетения данных - PullRequest
1 голос
/ 31 октября 2019

У меня есть такой код

 {name: 'Data Weave'} mapObject {(upper $$ ) : $}

, который динамически принимает объект карты и ключ в верхнем регистре. ниже вывод

   {
"NAME": "Data Weave"
   }

Когда я удаляю скобки, которые заключены в ключевое слово «upper». переплетение данных вызывает ошибку, как это.

У меня путаница синтаксиса, где именно использовать круглые скобки в языке переплетения данных. в приведенном выше коде, почему необходимо использовать круглые скобки. как компилятор интерпретирует условия или выражения, заключенные в круглые скобки.

Ответы [ 2 ]

5 голосов
/ 31 октября 2019
%dw 2.0
output application/json
---
{name: 'Data Weave'} mapObject {(upper($$) ) : $}

Я думаю, вы просто забыли скобки для верхней функции. в скобках, окружающих верхнюю функцию, все еще нужно сказать DW, что ключ не статичен, а динамически оценивается. Подводя итог:

  • upper($$) поместите ваш $$ в верхний регистр => Скобки здесь для передачи аргументов функции
  • (upper($$)), потому что ключ является результатомоценка => круглые скобки здесь для оценки выражения и возврата результата
1 голос
/ 31 октября 2019

AFAIK в DW есть три различных значения скобок:

1) Операции предшествования, например, (1 + 1) * 10

2) Оценщики полей, ваш сценарий использования и описание @Sebastien Colas.

3) Разрушители объектов и массивы объектов на пары ключей и значений, когда они появляются сами по себе внутри {}:

%dw 2.0
output application/dw
var d = [
    {
        a: 1,
        b: 2,
        c: 3
    },
    {
        d: 4,
        e: 5
    }
]
---
[
    {
        (d)
    },
    {
        (d[1]),
        f: 6
    }   
]
...