코틀린에서 호출 가능 참조(Callable Reference)는 함수나 메서드를 참조하여 변수에 저장하거나 다른 함수의 인자로 전달할 때 사용하는 편리한 문법입니다. 호출 가능 참조를 사용하면 람다 식이나 익명 함수를 대체하여 코드를 간결하게 만들 수 있습니다.
함수 참조 (Function Reference)
코틀린에서는 함수 참조를 사용하여 함수를 직접 참조할 수 있습니다. 함수 참조는 :: 연산자를 사용하여 표현됩니다.
fun greet(name: String): String {
return "Hello, $name!"
}
val greeting: (String) -> String = ::greet
println(greeting("Alice")) // 출력: Hello, Alice!
멤버 참조 (Member Reference)
멤버 참조는 클래스의 멤버 변수, 프로퍼티, 또는 멤버 함수를 직접 참조할 때 사용됩니다.
멤버 변수 또는 프로퍼티 참조
data class Person(val name: String, val age: Int)
val ageExtractor: (Person) -> Int = Person::age
val person = Person("Bob", 25)
println(ageExtractor(person)) // 출력: 25
멤버 함수 참조
data class Point(val x: Int, val y: Int)
fun Point.isOrigin(): Boolean {
return x == 0 && y == 0
}
val originChecker: Point.() -> Boolean = Point::isOrigin
val point = Point(0, 0)
println(point.originChecker()) // 출력: true
생성자 참조 (Constructor Reference)
생성자 참조는 클래스의 생성자를 직접 참조할 때 사용됩니다.
data class Person(val name: String, val age: Int)
val personFactory: (String, Int) -> Person = ::Person
val newPerson = personFactory("Alice", 30)
println(newPerson) // 출력: Person(name=Alice, age=30)
함수 호출 가능 참조와 람다 식의 비교
// 람다 식을 사용한 예제
val lambdaGreet: (String) -> String = { name -> "Hello, $name!" }
// 함수 호출 가능 참조를 사용한 예제
val functionReferenceGreet: (String) -> String = ::greet
println(lambdaGreet("Alice")) // 출력: Hello, Alice!
println(functionReferenceGreet("Bob")) // 출력: Hello, Bob!
호출 가능 참조는 코드를 더 간결하게 만들어주고 가독성을 향상시킬 수 있습니다. 주로 함수 또는 메서드에 대한 참조 시에 사용되며, Kotlin에서 함수형 프로그래밍을 간편하게 지원하는데에 기여합니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 비지역적 제어 흐름 (0) | 2023.12.31 |
---|---|
코틀린 인라인 함수와 프로퍼티 (0) | 2023.12.31 |
코틀린 익명 함수 (0) | 2023.12.31 |
코틀린 람다 함수 (0) | 2023.12.31 |
코틀린 함수 타입 (0) | 2023.12.30 |