PHpullh
학습 라이브러리/Kotlin/함수 참조 (Function References)

KOTLIN · 함수

함수 참조 (Function References)

:: 연산자로 함수, 생성자, 프로퍼티를 참조합니다. 고차 함수에 기존 함수를 간결하게 전달합니다.

함수중급function-referenceconstructor-referencebound-referenceproperty-reference

핵심 설명

:: 연산자로 함수, 생성자, 프로퍼티를 참조합니다. 고차 함수에 기존 함수를 간결하게 전달합니다.

Kotlin code

fun isEven(n: Int) = n % 2 == 0

data class User(val name: String, val age: Int) {
    fun greet() = "안녕하세요, ${name}입니다"
}

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)

    // 함수 참조
    println(numbers.filter(::isEven))      // [2, 4, 6]

    // 생성자 참조
    val names = listOf("김철수", "이영희")
    val users = names.map { User(it, 25) }

    // 멤버 함수 참조
    val greetings = users.map(User::greet)
    println(greetings)

    // 바운드 참조 (특정 인스턴스에 바인딩)
    val user = User("박지성", 30)
    val greetFn: () -> String = user::greet
    println(greetFn())

    // 프로퍼티 참조
    val ages = users.map(User::age)
    println(ages)
}

학습 팁

User::name처럼 프로퍼티 참조를 사용하면 { it.name }보다 간결하고 의도가 명확합니다.

주의할 점

오버로딩된 함수를 참조할 때 타입을 명시해야 합니다. val ref: (Int) -> Boolean = ::isEven처럼 타입을 지정하세요.

자주 묻는 질문

함수 참조 (Function References)란 무엇인가요?

:: 연산자로 함수, 생성자, 프로퍼티를 참조합니다. 고차 함수에 기존 함수를 간결하게 전달합니다.

함수 참조 (Function References) 학습 시 주의할 점은 무엇인가요?

오버로딩된 함수를 참조할 때 타입을 명시해야 합니다. val ref: (Int) -> Boolean = ::isEven 처럼 타입을 지정하세요.