在数据编织语言中哪里可以准确使用括号“()”

Where to exactly use parenthesis "()" in data weave language

我有这样的代码

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

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

   {
"NAME": "Data Weave"
   }

当我删除包含在 "upper" 关键字中的括号时。数据编织正在抛出这样的错误。

我对在数据编织语言中的什么地方使用括号感到语法困惑。在上面的代码中为什么需要使用括号。编译器如何解释括号内的条件或表达式。

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

我想你只是忘记了上层函数的括号。 围绕上层函数的括号仍然需要向 DW 说明密钥不是静态的,而是动态评估的。 总结:

  • upper($$) 把你的 $$ 写成大写 => 括号是用来给函数传递参数的
  • (upper($$)) 因为键是求值的结果 => 括号在这里是用来求值的,return 是结果

据我所知,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
    }   
]