더북(TheBook)

이런 경우 multiplyBy2의 타입은 (Int) -> Int가 아니고 (MyClass, Int) -> Int다. 클래스의 동반 객체에 정의된 함수라면(자바 정적 메서드와 비슷하다) 이를 임포트하거나 다음과 같은 구문으로 사용할 수 있다.

class MyClass {
    companion object {
        fun double(n: Int): Int = n * 2
    }
}

val mutliplyBy2: (Int) -> Int = (MyClass)::double

여기서 (MyClass)::double은 다음을 줄여 쓴 것이다.

val mutliplyBy2: (Int) -> Int = MyClass.Companion::double

.Companion이나 괄호를 잊지 말라. 이를 빼먹으면 전혀 다른 결과를 얻게 된다.

val mutliplyBy2: (Int) -> Int = MyClass::double // 컴파일러가 인스턴스 메서드 double을 찾을 수 없다!
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.