red*_*888 10 groovy jenkins jenkins-pipeline
这是编写Jenkins管道代码的命令模式,如下所示:
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何简单地说这个,但是这个闭包是隐式导入的,可以通过.groovy它所在的文件的文件名来调用.
我称之为:
MyClosure { myarg = 'sdfsdf' }
Run Code Online (Sandbox Code Playgroud)
我不完全确定这是做什么的.它正在做call(body),然后body作为代表分配.所以这意味着我传递的关闭是代表,但不仅仅是主人吗?华?我困惑.
Rob*_*les 11
当它运行时,它正在创建一个空的map(config).然后它告诉closure(body)首先查看委托,通过将其resolveStrategy设置为常量来查找属性Closure.DELEGATE_FIRST.然后它将config地图指定为body对象的委托.
现在,当您执行body()闭包时,变量的范围限定为config地图,所以现在config.myarg = 'sdfsdf'.
现在稍后在代码中,您可以轻松访问值中的映射config.
body是所有者,默认情况下是委托.但是当您将委托切换为config,并告诉它首先使用委托时,您将获得变量config的范围.
| 归档时间: |
|
| 查看次数: |
4164 次 |
| 最近记录: |