変数に値を1つのメソッドで格納し、別のメソッドまたはクロージャでその変数からその値を使用する必要があります。この価値をどのように共有できますか?Groovyでグローバル変数を作成してアクセスするにはどうすればよいですか?
答えて
変数をクラススコープまたはスクリプトスコープで宣言してから、メソッドまたはクロージャの内側から変数にアクセスするだけです。例がなければ、あなたの特定の問題に対してより具体的ではありません。
ただし、グローバル変数は一般的に不良フォームとみなされます。
変数を関数から戻して、それを次の関数に渡すのはなぜですか?
すべてのオブジェクト指向言語と同様に、Groovyはそれ自体で "グローバル"という概念を持っていません(BASIC、Python、Perlとは異なり)。
あなたが同じ変数を共有する必要があるいくつかの方法は、フィールドを使用している場合:
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
したいが、あなたはこのようなものが必要かを把握できませんでしたか? :
def a = { b -> b = 1 }
bValue = a()
println b // prints 1
今bValue
は閉鎖a
内の変数であるb
の値が含まれています。今すぐあなたは何でもすることができますbValue
あなたの質問に間違いがあるかどうか教えてください
グロビスクリプトでは、スコープが予想外に異なる可能性があります。これは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.
}
私はあなたがクラスレベルの変数について話していると思います。 グローバル変数/クラスのレベル変数を使用して上記のように良い習慣ではありません。
本当に使いたいのであれば。あなたに影響がないと確信しているなら...
メソッドの外側にある任意の変数を宣言します。変数の型アウトとクラスレベルで
例:
{
method()
{
a=10
print(a)
}
// def a or int a wont work
a=0
}
ここ
きれいなアプローチではないかもしれませんが、うまくいきます;)ありがとう。 –
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);
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. ローカル変数を使用してグローバル変数を作成するにはどうすればよいですか?
- 2. グローバル変数を作成するにはどうすればいいですか?
- 3. どのようにしてグローバル変数を作成するのですか?NSArray
- 4. Winformsアプリケーションでグローバルにアクセス可能なデータテーブルを作成するにはどうすればよいですか?
- 5. Javaファイル全体で変数グローバルを作成するにはどうすればいいですか
- 6. JavaScriptで複数変数間でグローバル変数を使用するにはどうすればよいですか?
- 7. Oracle 11gで複数のデータベースを作成してアクセスするにはどうすればよいですか?
- 8. groovy jsonbuilderを.eachで使用して配列を作成するにはどうすればいいですか?
- 9. Javaで変数を使用してプログレッションを作成するにはどうすればよいですか?
- 10. ファイルの作成、変更、アクセス日をプログラムで変更するにはどうすればよいですか?
- 11. django adminにグローバル変数を保存して編集するにはどうすればよいですか?
- 12. ドッカー内で変数を作成して使用するにはどうすればよいですか?
- 13. 変数を作成するにはどうすればいいですか?
- 14. グローバルにアクセスできるようにcodeigniterセッションを設定するにはどうすればよいですか?
- 15. sysfsのkobjectをグローバル変数として使用するにはどうすればよいですか?
- 16. 関数をグローバル変数に割り当てるにはどうすればよいですか?
- 17. ノードモジュール内で「グローバル」変数を共有するにはどうすればよいでしょうか?
- 18. この変数にはどのようにアクセスすればよいですか?
- 19. 別の変数名から変数を作成するにはどうすればよいですか?
- 20. 空変数を考慮して文字列を作成するにはどうすればよいですか?
- 21. MySQL変数を使用してprepare文を作成するにはどうすればよいですか?
- 22. 2つの変数を使用してファイルを作成するにはどうすればよいですか?
- 23. ループ内で関数を作成しないようにするにはどうすればよいですか?
- 24. jQueryカラーボックスを閉じるグローバル関数を作成するにはどうすればいいですか?
- 25. AJAXコールで作成されたJavascriptグローバル変数の作成/アクセス
- 26. JavaScript内でPHP変数を使用するにはどうすればよいですか? VARSを作成し、
- 27. groovyを使用してHTMLフラグメントをXHTMLに変換するにはどうすればよいですか?
- 28. javascript変数を作成してjQueryで使用するにはどうすればいいですか
- 29. 引数を変更する関数オブジェクトを作成するにはどうすればよいですか?
- 30. Codeigniterグローバル変数を作成してアクセスします
私は値がassigである変数を使用したい場合閉鎖内でned?例:スクリプトの冒頭にdef a = nullがあります。今度はクロージャの内側にa = 'some string'という値が割り当てられます。私はこの新しい価値が他のすべての閉鎖にアクセスできるようにしたい。ありがとう – OK999
本当に? –
私は目的の計算値を返し、それを使用してクロージャーを作成し終わったところで、Groovy 1で新しいものを使用するのに、 – OK999