PHpullh
학습 라이브러리/Kotlin/컨텍스트 리시버 (Context Receivers)

KOTLIN · 기초 문법

컨텍스트 리시버 (Context Receivers)

컨텍스트 리시버는 함수가 특정 컨텍스트 내에서만 호출되도록 제한합니다. 의존성을 암시적으로 전달하는 강력한 기능입니다.

기초 문법고급context-receiversscopedependency-injection

핵심 설명

컨텍스트 리시버는 함수가 특정 컨텍스트 내에서만 호출되도록 제한합니다. 의존성을 암시적으로 전달하는 강력한 기능입니다.

Kotlin code

// 로깅 컨텍스트
interface Logger {
    fun log(message: String)
}

// 트랜잭션 컨텍스트
interface Transaction {
    fun execute(sql: String)
}

class ConsoleLogger : Logger {
    override fun log(message: String) = println("[LOG] $message")
}

// context(Logger)를 사용하면 Logger 스코프에서만 호출 가능
// Kotlin 2.0+ 문법 (실험적)
fun Logger.saveUser(name: String) {
    log("사용자 저장: $name")
    println("DB에 $name 저장 완료")
}

fun main() {
    val logger = ConsoleLogger()
    with(logger) {
        saveUser("김철수")
    }
}

학습 팁

컨텍스트 리시버는 DI 프레임워크 없이도 의존성 주입 패턴을 구현할 수 있게 합니다. DSL 설계에 특히 유용합니다.

주의할 점

컨텍스트 리시버는 아직 실험적 기능입니다. 프로덕션 코드에서는 -Xcontext-receivers 컴파일러 플래그와 함께 신중하게 사용하세요.

자주 묻는 질문

컨텍스트 리시버 (Context Receivers)란 무엇인가요?

컨텍스트 리시버는 함수가 특정 컨텍스트 내에서만 호출되도록 제한합니다. 의존성을 암시적으로 전달하는 강력한 기능입니다.

컨텍스트 리시버 (Context Receivers) 학습 시 주의할 점은 무엇인가요?

컨텍스트 리시버는 아직 실험적 기능입니다. 프로덕션 코드에서는 -Xcontext-receivers 컴파일러 플래그와 함께 신중하게 사용하세요.