Kotlin/포스팅

코틀린 호출 가능 참조

짜집퍼박사(짜박) 2023. 12. 31. 02:44

코틀린에서 호출 가능 참조(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