[kotlin] 코틀린에서의 함수 타입 변환 함수

코틀린은 함수를 일급 시민으로 취급하여 함수를 변수에 할당하고, 함수를 매개변수로 전달하고, 함수를 반환할 수 있습니다. 코틀린에서는 이러한 유연한 함수 처리를 위해 함수 타입 변환 함수를 제공합니다.

함수 타입 변환 함수

코틀린에서는 다음과 같은 함수 타입 변환 함수를 제공합니다.

함수 참조를 생성하는 연산자 ::

함수 참조를 생성하는 연산자 ::를 사용하면 이름을 통해 함수에 대한 참조를 생성할 수 있습니다. 예를 들어, 다음과 같이 함수를 선언합니다.

fun sayHello(name: String) {
    println("Hello, $name!")
}

이 함수에 대한 참조를 생성하려면 다음과 같이 :: 연산자를 사용합니다.

val helloFunction = ::sayHello

이렇게 생성된 함수 참조 helloFunctionsayHello 함수를 가리키며, 이를 이용하여 호출할 수 있습니다.

helloFunction("John")  // Hello, John!

함수 타입을 호출 가능한 타입으로 변환하는 함수 invoke

함수 타입을 호출 가능한 타입으로 변환하기 위해 invoke 함수를 사용합니다. 예를 들어, 다음과 같이 함수 타입을 선언합니다.

typealias GreetingFunction = (String) -> Unit

이 함수 타입 GreetingFunction을 호출 가능한 타입으로 변환하려면 invoke 함수를 호출하면 됩니다.

val greeting: GreetingFunction = ::sayHello
greeting.invoke("Mary")  // Hello, Mary!

invoke 함수는 함수 타입의 객체를 호출해주는 역할을 합니다.

결론

코틀린에서의 함수 타입 변환 함수를 사용하면 함수를 일급 시민으로 다룰 수 있습니다. :: 연산자를 사용하여 함수 참조를 생성하고, invoke 함수를 사용하여 함수 타입을 호출 가능한 타입으로 변환할 수 있습니다. 이를 통해 더욱 유연하고 간편하게 함수를 다룰 수 있습니다.

참고 자료