我需要在一个方法中的变量中存储一个值,然后我需要在另一个方法或闭包中使用该变量的值。我怎样才能分享这个价值?如何在Groovy中创建和访问全局变量?
67
A
回答
2
只需在类或脚本范围声明变量,然后从您的方法或闭包中访问它。没有一个例子,尽管你的特定问题很难被更具体化。
但是,全局变量通常被认为是不好的形式。
为什么不从一个函数返回变量,然后传递给下一个?
1
与所有的OO语言一样,Groovy本身没有“全局”的概念(不像BASIC,Python或Perl)。
如果您有需要共享同一个变量的几种方法,使用字段:
30
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
0
无法弄清楚你想要什么,但你需要这样的事? :
def a = { b -> b = 1 }
bValue = a()
println b // prints 1
现在bValue
包含b
的值,它是在封闭a
的变量。现在你可以做任何事情bValue
让我知道如果我误解了你的问题
131
在Groovy脚本中,范围可能与预期不同。这是因为Groovy脚本本身就是一个带有运行代码的方法的类,但是这些都是运行时完成的。我们可以通过省略类型定义来定义一个变量作为范围,或者在Groovy 1.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.
}
1
我想你是在谈论班级变量。 如上所述,使用全局变量/类级别变量不是一种好的做法。
如果你真的想使用它。如果你确定不会有影响...
声明方法外的任何变量。在类级别同列变量类型
如:
{
method()
{
a=10
print(a)
}
// def a or int a wont work
a=0
}
+0
它可能不是一个干净的方法,但它的工作;)谢谢。 – 2016-08-03 11:42:22
1
def sum = 0
// This method stores a value in a global variable.
def add =
{
input1 , input2 ->
sum = input1 + input2;
}
// This method uses stored value.
def multiplySum =
{
input1 ->
return sum*input1;
}
add(1,2);
multiplySum(10);
2
def iamnotglobal=100 // This will not be accessible inside the function
iamglobal=200 // this is global and will be even available inside the
def func()
{
log.info "My value is 200. Here you see " + iamglobal
iamglobal=400
//log.info "if you uncomment me you will get error. Since iamnotglobal cant be printed here " + iamnotglobal
}
def func2()
{
log.info "My value was changed inside func to 400 . Here it is = " + iamglobal
}
func()
func2()
这里iamglobal变量是FUNC,然后使用一个全局变量再次提供给FUNC2
相关问题
- 1. Codeigniter创建和访问全局变量
- 2. NSUserDefaults创建全局访问变量
- 3. 如何在Angular和TypeScript中访问AngularJS的全局`angular`变量?
- 4. 如何从WebMethod访问全局变量?
- 5. 访问Bamboo项目和全局变量如何访问Bamboo项目和全局变量
- 6. 访问javascript全局变量
- 7. 访问全局变量
- 8. 全局访问变量
- 9. JSP访问全局变量
- 10. AS3:访问全局变量
- 11. 访问全局变量
- 12. 访问全局变量
- 13. 访问全局变量inPerformed
- 14. 访问全局变量
- 15. 全局类访问变量
- 16. Javascript全局变量访问
- 17. 在函数中访问全局变量
- 18. Android:在onClickListener中访问全局变量
- 19. 如何在全局范围PHP中访问局部变量?
- 20. 如何在C#中访问全局变量,如在VB.net中?
- 21. 如何创建带有全局变量
- 22. 如何创建jQuery的全局变量
- 23. 如何创建一个全局变量?
- 24. 如何创建全局变量?
- 25. Mule Studio如何创建全局变量
- 26. BackgroundWorker和访问全局变量
- 27. 设置和访问全局变量
- 28. 创建全局Groovy Closure
- 29. 如何在if和else中创建变量如果成为全局变量?
- 30. 如何使用局部变量创建全局变量?
如果我想使用其值已分配的变量在关闭内?例如:我在脚本的开头有def a = null。现在在一个闭包里面,赋值a ='some string'的值。我希望这个新值能够被所有其他闭包访问。谢谢 – OK999 2017-10-26 18:30:53
真的吗?当你必须尝试修复它时,你会恨自己 – 2017-10-27 06:20:12
我最终创建了一个闭包,它返回所需的计算值,并在需要的地方使用 – OK999 2017-10-27 13:24:14