1277870953.jpg

그루비에서는 변수형을 선언해도 되고 안해도 됩니다.

형을 명시 하지 않고 선언하려면 def문을 쓰면 됩니다.


def를 쓴경우 변수형은 할당한 값에 따라 변하게 되는데 이를 duck typing이라고 부릅니다.

(PHP에서는 type juggling이라고 부릅니다.)


그루비의 변수형은 자바와 달리 모두 클래스입니다. 즉 정수면 Integer, 문자열이면 String 이 됩니다.

다음 코드로 변수형이 어떻게 정해지는지 관찰해보시죠.


 [ 1, 1.0, "1", 1.0f, 1.0d ].each { value ->
    println value.class.name
}


결과

java.lang.Integer

java.math.BigDecimal

java.lang.String

java.lang.Float

java.lang.Double


그루비와 자바의 차이점은 그루비에서는 모든 변수형은 객체이고 추가로 BigDecimal 클래스가 있다는 것입니다.

def는 규칙을 가지고 변하긴 하지만 묵시적(imcplicit)으로 알아서(?!) 변한다는 점에 주의하세요.