[kotlin] 코틀린에서 함수와 메서드의 참조 전달 방식

코틀린은 함수형 프로그래밍 언어로, 함수 및 메서드의 참조 전달 방식을 지원합니다. 여기서 함수 참조는 함수나 메서드를 값으로 사용하는 것을 말하며, 이는 고차 함수와 관련된 많은 유연한 패턴을 제공합니다.

함수의 참조 전달 방식

코틀린에서 함수는 일급 시민으로 취급되므로, 다른 함수의 인자로 전달할 수 있습니다. 즉, 함수를 변수에 할당하거나 다른 함수로 전달할 수 있습니다.

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

fun executeFunction(function: (String) -> Unit, name: String) {
    function(name)
}

fun main() {
    executeFunction(::sayHello, "John")
}

위의 예제에서 executeFunction 함수는 (String) -> Unit 형식의 함수를 인자로 받습니다. ::를 사용하여 sayHello 함수의 참조를 전달하여 executeFunction에서 sayHello 함수를 실행할 수 있습니다.

메서드의 참조 전달 방식

메서드의 경우에도 동일한 원리가 적용됩니다. 객체의 메서드를 참조로 전달하여 다른 함수에 전달할 수 있습니다.

class Greeter {
    fun greet(name: String) {
        println("Hello, $name!")
    }
}

fun executeMethod(method: Greeter.(String) -> Unit, greeter: Greeter, name: String) {
    greeter.method(name)
}

fun main() {
    val greeter = Greeter()
    executeMethod(Greeter::greet, greeter, "Jane")
}

위의 예제에서 executeMethod 함수는 Greeter.(String) -> Unit 형식의 메서드를 인자로 받습니다. Greeter::greet를 사용하여 greet 메서드의 참조를 전달하여 executeMethod에서 greet 메서드를 실행할 수 있습니다.

코틀린에서 함수 및 메서드의 참조 전달은 함수형 프로그래밍의 핵심적인 요소이며, 코드의 모듈화와 캡슐화에 유용하게 활용될 수 있습니다.

참고문헌: