1
这是一个命令模式来编写詹金斯管道这样的代码:为什么jenkinsfile以这种方式使用闭包?
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
}
我不知道怎样来写这个简单,但这种封闭得到隐含的进口,并且可以通过.groovy
文件的文件名被称为它生活在
我这样称呼它:
MyClosure { myarg = 'sdfsdf' }
我不能完全肯定这是什么做的。这是做call(body)
,然后分配body
作为代表。所以这意味着我通过它的关闭是代表,但是不仅仅是主人?华?我困惑。
如果我没有将代理切换到配置会怎样?身体将是代表?如果是这种情况,我将无法访问传入的myarg? – red888
对。 'body'是一个指向匿名函数的变量。如果你没有改变委托,那么myarg会在该函数的范围内被设置为'sdfsdf',并且只要该函数退出,该值就消失了。但是,如果您委托给地图对象,它将在该对象上设置属性,您现在可以获取该属性。 –
其实身体不指向一个功能。这是关闭的一个实例。 – Opal