스칼라에서 함수 리터럴을 정의할 때, 실제로는 apply라는 메소드를 가진 객체로 정의된다.



예제)

두 int 값이 같은지 비교하여 boolean값을 리턴하는 isEqual이라는 함수를 아래와 같이 정의한다고 할 때


실제로는


이렇게 정의된다는 이야기다.

여기서 Function2는 parameter 2개를 받는 함수라는 뜻이며 [Int, Int, Boolean]은 (Int, Int) => Boolean을 뜻한다.



isEqual 함수를 실행할 땐 아래 첫번째 문장은 실제론 두번째 문장으로 실행된다.

> isEqual(2,2)

> isEqual.apply(2,2)


+ Recent posts