Groovy가 범위와 변수를 함수간에 전달할 때 그 변수를 관리하는 방법을 이해하는 데 도움이되고 싶습니다. 내 메인 메소드에서 def foo
을 선언하고 private void 메소드 인 changeStuff에 인수로 전달한다고 가정 해 보겠습니다.변수의 Groovy 범위, 할당 및 참조
public static void main(args) {
def foo = [:];
changeStuff(foo);
println(foo);
}
private static void changeStuff(foo) {
foo.bar = "new stuff";
}
인쇄 결과는 [bar:new stuff]
입니다하지만 다른 방법으로 foo는 조작 힘든 시간을 다음과 같이 그럼 변경할 수 있습니다.
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
관련, 완전히 이해하지 오전 여기가 알고이 다음 두 가지 예를 참조하십시오? 이것에 대해 더 자세히 알 수있는 요약이나 방향이 있으면 감사하겠습니다.
Groovy는 Java와 유사합니다. http://stackoverflow.com/questions/40480/is-java-pass-by-reference –
좋은 기사, 감사합니다. –