首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Groovy中创建和访问全局变量?

如何在Groovy中创建和访问全局变量?
EN

Stack Overflow用户
提问于 2011-06-10 19:44:43
回答 8查看 167.5K关注 0票数 141

我需要在一个方法的变量中存储一个值,然后在另一个方法或闭包中使用该变量的值。我如何共享这个值?

EN

回答 8

Stack Overflow用户

发布于 2011-06-11 19:27:27

在Groovy脚本中,作用域可以与预期的不同。这是因为Groovy脚本本身就是一个具有运行代码的方法的类,但这都是在运行时完成的。我们可以通过省略类型定义来定义一个变量的作用域,或者在Groovy1.8中添加@Field注释。

代码语言:javascript
复制
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.
}
票数 226
EN

Stack Overflow用户

发布于 2011-06-10 19:53:30

代码语言:javascript
复制
class Globals {
   static String ouch = "I'm global.."
}

println Globals.ouch
票数 58
EN

Stack Overflow用户

发布于 2017-09-01 14:12:56

代码语言:javascript
复制
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它的全局变量

票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6305910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档