여기서 multiplyBy2 함수가 들어 있는 객체나 클래스, 패키지에 들어 있는 double 함수가 호출된다. 만약 double이 다른 클래스에 정의된 인스턴스 함수고 해당 클래스의 인스턴스에 대한 참조를 가지고 있다면 다음 구문을 사용해 이를 호출할 수 있다.
class MyClass { fun double(n: Int): Int = n * 2 } val foo = MyClass() val mutliplyBy2: (Int) -> Int = foo::double
double이 다른 패키지에 들어 있다면 이를 임포트해야 한다.
import other.package.double val mutliplyBy2: (Int) -> Int = ::double
반면에 클래스 이름을 붙이면 전혀 다른 타입의 함수가 생긴다.
val mutliplyBy2: (MyClass, Int) -> Int = MyClass::double // { obj: MyClass, n: Int -> (obj::double)(n) }과 같다.