Kotlin/포스팅

코틀린 지연 계산 프로퍼티와 위임

짜집퍼박사(짜박) 2023. 12. 30. 22:18

코틀린에서는 지연 계산 프로퍼티(lazy properties)와 위임(delegation)을 사용하여 프로퍼티의 동작을 커스터마이징할 수 있습니다. 이들은 프로퍼티의 초기화를 늦추거나, 다양한 동작을 추가하기 위해 활용됩니다.

 

지연 계산 프로퍼티 (Lazy Properties)

지연 계산 프로퍼티는 프로퍼티가 처음으로 접근되는 시점에 초기화되도록 하는 기술입니다. 이를 통해 초기화 비용이 높은 작업을 필요한 시점까지 늦출 수 있습니다.

val lazyProperty: String by lazy {
    println("Compute the value")
    "Lazy Property Value"
}

fun main() {
    println("Before accessing lazy property")
    println(lazyProperty) // 처음 접근 시 초기화됨
    println(lazyProperty) // 이미 초기화된 값 반환
}

lazy 함수를 사용하여 지연 계산 프로퍼티를 선언할 수 있습니다. 지연 계산 프로퍼티는 처음으로 접근되는 시점에서 람다 식을 통해 초기화됩니다.

 

프로퍼티 위임 (Property Delegation)

프로퍼티 위임은 프로퍼티의 Getter 및 Setter를 외부 객체로 위임하는 메커니즘을 제공합니다. by 키워드를 사용하여 위임 객체를 지정할 수 있습니다.

interface MyInterface {
    fun getValue(): String
    fun setValue(value: String)
}

class DelegatedClass : MyInterface {
    private var myValue: String = "Default Value"

    override fun getValue(): String {
        println("Get value: $myValue")
        return myValue
    }

    override fun setValue(value: String) {
        println("Set value: $value")
        myValue = value
    }
}

class MyClass : MyInterface by DelegatedClass()

fun main() {
    val myInstance = MyClass()

    // Getter 호출
    println(myInstance.getValue())

    // Setter 호출
    myInstance.setValue("New Value")
}

위의 코드에서 MyClass는 DelegatedClass에 프로퍼티 접근을 위임하고 있습니다. 이를 통해 MyClass에서는 DelegatedClass의 동작을 사용할 수 있습니다.

표준 라이브러리에서는 이미 여러 가지 유용한 위임 속성이 제공되고 있습니다. 예를 들면 by lazy, by observable, by vetoable 등이 있습니다.

지연 계산 프로퍼티와 프로퍼티 위임은 코드를 더 모듈화하고 간결하게 만들 수 있는 강력한 기능 중 하나입니다. 특히 코드의 가독성과 성능을 고려할 때 유용하게 사용될 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 객체 선언  (0) 2023.12.30
코틀린 객체  (0) 2023.12.30
코틀린 커스텀 접근자  (0) 2023.12.30
코틀린 늦은 초기화  (0) 2023.12.30
코틀린 최상위 프로퍼티  (0) 2023.12.30