使用括号的Groovy DSL?

时间:2011-08-05 13:53:30

标签: syntax groovy dsl parentheses

我有一个像这样的groovy DSL脚本:

entity(attribute1:"one", attribute2:"two")
到目前为止一切顺利。我运行脚本并将脚本的委托设置为实体定义的类,并且该类处理所有内容。

现在我想这样做:

entity(attibute1:(subattribute1:"one", subattribute2:"two"))

这在语法上有可能吗?因为(subattribute1:“one”,subattribute2:“two”)本身并不意味着什么,我假设没有,虽然我想知道是否有一些我不知道的Groovy魔法允许这个。< / p>

我不想做

entity(attibute1:[subattribute1:"one", subattribute2:"two"])

尽管我知道这很有效。只是语法偏好。

1 个答案:

答案 0 :(得分:2)

不,你必须使用方括号(如你所说,你不想要)。

第一个例子:

entity(attribute1:"one", attribute2:"two")

是实际调用的快捷方式:

entity( [ attribute1:"one", attribute2:"two" ] )

所以,你需要方形括号,(表示attribute1键包含一个地图,或者你需要在括号前加上另一个方法名称,例如:

entity(attibute1:attribute(subattribute1:"one", subattribute2:"two"))