在数据编织语言中何处确切使用括号“()”

时间:2019-10-31 15:25:38

标签: dataweave mulesoft

我有这样的代码

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

动态获取地图对象和大写字母键。下面是输出

   {
"NAME": "Data Weave"
   }

当我删除括在“ upper”关键字中的括号时。数据编织会引发这样的错误。

我在数据编织语言中的括号中的确切位置使用语法感到困惑。在上面的代码中,为什么需要使用括号。编译器如何解释括号之间的条件或表达式。

2 个答案:

答案 0 :(得分:5)

%dw 2.0
output application/json
---
{name: 'Data Weave'} mapObject {(upper($$) ) : $}

我想您只是忘记了括号,而不是上层功能。 仍然需要对DW括号括起来,密钥不是静态的而是动态评估的。 总结一下:

  • upper($$)将您的$$大写=>括号在此处用于将参数传递给函数
  • (upper($$)),因为键是求值的结果=>括号在这里用于求值并返回结果

答案 1 :(得分:1)

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
    }   
]