[kotlin] 확장 프로퍼티와 위임 프로퍼티의 사용법

확장 프로퍼티 (Extension Properties)

확장 프로퍼티는 기존 클래스에 새로운 프로퍼티를 추가하는데 사용됩니다. 이는 기존 클래스의 소스 코드를 변경하지 않고도 해당 클래스의 인스턴스에 새로운 속성을 추가할 수 있게 해줍니다.

확장 프로퍼티는 기본적으로 get 함수를 가지고 있어야 하며, 필요에 따라 set 함수를 추가할 수 있습니다.

다음은 String 클래스에 lengthIsEven 확장 프로퍼티를 추가하는 예시입니다.

val String.lengthIsEven: Boolean
    get() = this.length % 2 == 0

이제 문자열 인스턴스에 lengthIsEven 프로퍼티를 사용할 수 있게 되었습니다.

위임 프로퍼티 (Delegated Properties)

위임 프로퍼티는 프로퍼티 값을 다른 객체에 위임하는 기법을 말합니다. 기존의 getter와 setter 로직을 다른 객체에게 위임함으로써 코드의 재사용성과 간결성을 높일 수 있습니다.

Kotlin 표준 라이브러리에는 이미 Lazy, ObservableVetoable와 같은 내장된 위임 프로퍼티가 제공됩니다.

예를 들어, lazy 함수를 사용하여 지연 초기화된 프로퍼티를 정의할 수 있습니다.

val lazyValue: String by lazy {
    println("computed!")
    "Hello"
}

위임 프로퍼티를 만들고자 하는 경우 by 키워드 뒤에 위임할 로직을 정의할 수 있습니다.

확장 프로퍼티와 위임 프로퍼티 모두 강력한 기능으로, Kotlin에서 더욱 다양하고 유연한 코드를 작성할 수 있도록 해 줍니다.

참고 문헌: Kotlin 공식 문서