関数間で渡されるときにGroovyがスコープと変数を管理する方法を理解するのに役立ちます。メインメソッドで宣言def foo
し、それをプライベートvoidメソッドchangeStuffの引数として渡すとします。次に、次のように変更を加えることができます。
public static void main(args) {
def foo = [:];
changeStuff(foo);
println(foo);
}
private static void changeStuff(foo) {
foo.bar = "new stuff";
}
印刷された結果は次のとおりです[bar:new stuff]
。しかし、他の方法でfooを操作するのに苦労しています。次の2つの例を参照してください。
public static void main(args) {
def foo = [:];
changeStuff(foo);
println(foo);
}
private static void changeStuff(foo) {
def newStuff = [:]
newStuff.extra = "extra stuff";
foo = newStuff;
}
プリント:[:]
public static void main(args) {
def foo = "before";
changeStuff(foo);
println(foo);
}
private static void changeStuff(foo) {
foo = "after";
}
プリントbefore
私はここに私が完全に理解していないいくつかの概念があることを知っています、多分関連していdef
ますか?私がこれについてもっと学ぶことができる場所に関する要約や方向性はありがたいです。