코틀린에서 수신 객체가 있는 호출 가능 참조를 사용하면 함수나 메서드를 참조하면서 수신 객체도 함께 전달할 수 있습니다. 이것은 클래스의 멤버 함수를 참조하면서 그 함수를 호출할 때 특정 인스턴스를 수신 객체로 전달하고자 할 때 유용합니다.
수신 객체가 있는 호출 가능 참조는 다음과 같이 선언됩니다.
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 |