我需要在一个方法的变量中存储一个值,然后在另一个方法或闭包中使用该变量的值。我如何共享这个值?
发布于 2011-06-11 19:27:27
在Groovy脚本中,作用域可以与预期的不同。这是因为Groovy脚本本身就是一个具有运行代码的方法的类,但这都是在运行时完成的。我们可以通过省略类型定义来定义一个变量的作用域,或者在Groovy1.8中添加@Field
注释。
import groovy.transform.Field
var1 = 'var1'
@Field String var2 = 'var2'
def var3 = 'var3'
void printVars() {
println var1
println var2
println var3 // This won't work, because not in script scope.
}
发布于 2011-06-10 19:53:30
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
发布于 2017-09-01 14:12:56
def i_am_not_global = 100 // This will not be accessible inside the function
i_am_global = 200 // this is global and will be even available inside the
def func()
{
log.info "My value is 200. Here you see " + i_am_global
i_am_global = 400
//log.info "if you uncomment me you will get error. Since i_am_not_global cant be printed here " + i_am_not_global
}
def func2()
{
log.info "My value was changed inside func to 400 . Here it is = " + i_am_global
}
func()
func2()
这里,i_am_global
变量是由func
使用的全局变量,然后可用于func2
如果你用def
声明变量,它将是局部的,如果你不使用def它的全局变量
https://stackoverflow.com/questions/6305910
复制相似问题