2

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

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

到目前为止,一切都很好。我运行脚本并将脚本的委托设置为定义实体的类,该类处理所有内容。

现在我想这样做:

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

这在语法上是可能的吗?由于 (subattribute1:"one", subattribute2:"two") 本身没有任何意义,我假设不是,但我想知道是否有一些我不知道的 Groovy 魔法允许这样做。

我不想做

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

即使我知道这行得通。只是语法偏好。

4

1 回答 1

2

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

第一个例子:

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

是实际调用的快捷方式:

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

所以,你要么需要方括号,(表示attribute1键包含一个映射,或者你需要在大括号前面加上另一个方法名称,例如:

entity(attibute1:attribute(subattribute1:"one", subattribute2:"two"))
于 2011-08-05T13:58:50.767 回答