스칼라에서 함수 리터럴을 정의할 때, 실제로는 apply라는 메소드를 가진 객체로 정의된다.
예제)
두 int 값이 같은지 비교하여 boolean값을 리턴하는 isEqual이라는 함수를 아래와 같이 정의한다고 할 때
실제로는
이렇게 정의된다는 이야기다.
여기서 Function2는 parameter 2개를 받는 함수라는 뜻이며 [Int, Int, Boolean]은 (Int, Int) => Boolean을 뜻한다.
isEqual 함수를 실행할 땐 아래 첫번째 문장은 실제론 두번째 문장으로 실행된다.
> isEqual(2,2)
> isEqual.apply(2,2)