카테고리 없음2009. 2. 23. 07:44
그루비에서 가장 재미있는 문법은 클로저다. 클로저란 코드가 들어있는 블록을 말하는데, 이렇게 생겼다.
def adder = { x, y -> return x+y}
println adder(4,3)
println adder.call(4,3)
실행해보면 7 이 두번 출력된다.

메서드처럼 클로저도 인자에 디폴트 값을 지정할 수 있다.

def adder = { x, y = 3-> return x+y}

println adder(4,3)
println adder.call(4)
역시 7 이 두번 출력된다.

하지만 메서드처럼 쓸 수 있다는 것은 그다지 큰 충격이 아니다. 그보다는, 메서드를 호출하면서 "코드블럭"을 전달 할 수 있다는 것. 그럴싸해보인다.
def repeater(count, Closure worker) {
    count.times{worker(it);}
}
repeater(100) {println it}

자바니까, 식별자들에 한글도 들어간다.

def 반복해(횟수, Closure 일꾼) {
    횟수.times{일꾼(it);}
}
반복해(100) {println it}
Posted by jintopark