我有一个像这样的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"])
尽管我知道这很有效。只是语法偏好。
答案 0 :(得分:2)
不,你必须使用方括号(如你所说,你不想要)。
第一个例子:
entity(attribute1:"one", attribute2:"two")
是实际调用的快捷方式:
entity( [ attribute1:"one", attribute2:"two" ] )
所以,你需要方形括号,(表示attribute1
键包含一个地图,或者你需要在括号前加上另一个方法名称,例如:
entity(attibute1:attribute(subattribute1:"one", subattribute2:"two"))