Groovy斜杠操作符(Jenkins Job-DSL)

7
我们希望理解一些旧的job-dsl脚本,但不知道在这种情况下“斜杠运算符”是什么意思(因为它不能表示除法)。
def command = (shells.first() / command)

我们已经尝试查找了几本Groovy书籍,但只发现了一种简单的解决方案,即它表示“除法”。

1个回答

10

这是一个XML Node操作,用于返回XML节点的子节点,如果不存在则创建它。可能是您的第一个shells节点下的command节点。

Groovy允许operator overloading,因此它实际上是相同的“division”运算符,只是有些重新定义。这在允许操作符重载的其他语言中很常见(但也很有争议),但确实可以为更丰富的DSL提供便利。

快速查看了一下(旧版本的)JobDSL源代码,似乎他们是使用一个名为NodeEnhancement的类来完成的,特别是这个JavaDoc:

/**
Add div and leftShift operators to Node.
div - Will return the first child that matches name, and if it doesn't exists, it creates
...
**/

2
正确。还要查看Job DSL维基,其中解释了用于XML操作的重载运算符:https://github.com/jenkinsci/job-dsl-plugin/wiki/The-Configure-Block#transforming-xml - daspilker
@daspilker - 哦,嗨 :). 再次感谢您为这个伟大的项目所做的贡献。 - declension
1
这需要一些努力来追踪。 - niken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接