我需要在一個方法中的變量中存儲一個值,然後我需要在另一個方法或閉包中使用該變量的值。我怎樣才能分享這個價值?如何在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