Kotlin/포스팅

코틀린 수신 객체가 있는 호출 가능 참조

짜집퍼박사(짜박) 2023. 12. 31. 03:29

코틀린에서 수신 객체가 있는 호출 가능 참조를 사용하면 함수나 메서드를 참조하면서 수신 객체도 함께 전달할 수 있습니다. 이것은 클래스의 멤버 함수를 참조하면서 그 함수를 호출할 때 특정 인스턴스를 수신 객체로 전달하고자 할 때 유용합니다.

수신 객체가 있는 호출 가능 참조는 다음과 같이 선언됩니다.

val functionReference: ClassName.() -> ReturnType = ClassName::functionName

- functionReference: 수신 객체가 있는 호출 가능 참조입니다.
- ClassName: 함수 또는 메서드가 속한 클래스의 이름입니다.
- ReturnType: 함수 또는 메서드의 반환 타입입니다.
- functionName: 호출하려는 함수 또는 메서드의 이름입니다.

 

예를 들어, 다음은 Person이라는 클래스에 sayHello라는 멤버 함수가 있고, 이 함수를 수신 객체가 있는 호출 가능 참조로 참조하는 방법입니다.

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

fun main() {
    val person = Person("Alice")

    // 수신 객체가 있는 호출 가능 참조 선언
    val helloFunction: Person.() -> Unit = Person::sayHello

    // 수신 객체가 있는 호출 가능 참조를 사용하여 함수 호출
    person.helloFunction()  // 출력: Hello, Alice!
}

여기서 Person::sayHello는 Person 클래스의 sayHello 함수를 참조합니다. 선언된 helloFunction을 사용하면 해당 함수를 수신 객체로 호출할 수 있습니다.

이러한 형태의 호출 가능 참조는 함수형 프로그래밍에서 사용되는 많은 개념 중 하나이며, 특히 DSL (Domain-Specific Language) 구축이나 콜백 패턴 등에서 활용될 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 클래스 멤버인 확장  (0) 2023.12.31
코틀린 영역 함수  (0) 2023.12.31
코틀린 람다와 수신 객체 지정 함수 타입  (0) 2023.12.31
코틀린 동반 확장  (0) 2023.12.31
코틀린 확장 프로퍼티  (0) 2023.12.31