이런 경우 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을 찾을 수 없다!
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.