Kotlin에서 invoke 함수는 클래스 내부에 선언된 함수로, 호출 연산자를 오버라이딩 할 수 있습니다.
클래스 인스턴스를 함수처럼 호출할 수 있어서, 코드를 간편하게 작성할 수 있고 가독성을 높여 줍니다.
invoke 함수는 주로 함수형 프로그래밍에 유용하며, 함수 객체나 람다식 객체로도 사용됩니다.
invoke 함수를 사용하면 인스턴스 함수와 인스턴스 호출이 동일합니다.
그래서 sample.invoke()와 sample() 호출은 동일한 결과를 반환합니다.
class Sample { operator fun invoke(str: String): String { return str.toUpperCase() } } fun main() { val sample = Sample() println(sample.invoke("hello")) //HELLO println(sample("hello")) //HELLO }
invoke 함수는 람다를 구현하는 데에도 사용할 수 있습니다.
val myLambda = { str: String -> str.toUpperCase() } println(myLambda.invoke("hello")) //HELLO