在下面的一段代码中(取自Groovy Semantics Manual页面),为什么要使用关键字为赋值添加前缀def
?
def x = 0
def y = 5
while ( y-- > 0 ) {
println "" + x + " " + y
x++
}
assert x == 5
Run Code Online (Sandbox Code Playgroud)
该def
关键字可以被删除,这个片段将产生相同的结果.那么关键字的效果是def
什么?
我需要在一个方法中将值存储在变量中,然后我需要在另一个方法或闭包中使用该变量中的值.我该如何分享这个价值?
我想在 Jenkins 脚本管道中定义一个全局变量,可以在管道中的任何位置访问该变量。即任何阶段、任何方法。如果我在管道顶部定义 var,它可以在声明node
和stage
声明中工作,但不能在被调用的方法中工作。我不想使用 env.XXX 和 withEnv([]) 因为我可能必须从不同的地方调用这些方法,这意味着有时会使用 env,而不是其他的。
这是我用于脚本化管道的简单 JenkinsFile:
def jenkinsNode = 'linux'
def DEBUG = 1
node(jenkinsNode){
echo ">> node($jenkinsNode)"
echo "DEBUG = $DEBUG"
if (DEBUG) {
echo "DEBUG is On"}
else {
echo "DEBUG is Off"
}
stage('test-this') {
if (DEBUG) {
echo "DEBUG is On"}
else {
echo "DEBUG is Off"
}
testMethod()
}
echo "<< node($jenkinsNode)"
}
def testMethod() {
echo ">> testMethod()"
if (DEBUG) {
echo "DEBUG is On"} …
Run Code Online (Sandbox Code Playgroud)