Groovy DSL 使用括号?

发布于 2024-11-28 00:33:22 字数 491 浏览 1 评论 0原文

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

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

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

现在我想这样做:

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

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

我也不想这样做

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

即使我知道这有效, 。只是语法偏好。

I have a groovy DSL script like this:

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

so far so good. I run the script and set the script's delegate to a class where entity's defined, and the class handles everything.

Now I want to do this:

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

Is this somehow syntactically possible? Since (subattribute1:"one", subattribute2:"two") itself doesn't mean anything, I'm assuming not, though I'm wondering if there are some Groovy magic that I'm not aware of that allows this.

And I don't want to do

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

even though I know that works. Just a syntax preference.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在风中等你 2024-12-05 00:33:22

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

第一个示例:

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

是实际调用的快捷方式:

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

因此,您要么需要方括号,(表示 attribute1 键包含映射,或者您需要在大括号前添加另一个方法名称例如:

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

No, you have to use the square brace (as you have said you don't want).

The first example:

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

is a shortcut for actually calling:

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

So, you would either need the square braces, (to signify the attribute1 key contains a map, or you would need to prefix the brace with another method name such as:

entity(attibute1:attribute(subattribute1:"one", subattribute2:"two"))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文