코틀린에는 확장 함수와 비슷하게 확장 프로퍼티가 있습니다
val String.lastChar: Char
get() = this[length - 1]
만드는 방법은 확장 함수와 비슷합니다. 메소드 이름 앞에 receiver type을 적어줘야 합니다.
실제 인스턴스에 필드를 추가하는건 아니고, 그냥 syntatic sugar입니다. 따라서 backing field를 가질 수 없고, getter를 필수적으로 만들어줘야 합니다.
var StringBuilder.lastChar: Char
get() = this[length - 1]
set(value) {
setCharAt(length - 1, value)
}
StringBuilder의 맨 마지막 글자를 바꾸는 setter를 정의한 예시입니다.
코틀린 stdlib 예시
public val <T> List<T>.lastIndex: Int
get() = this.size - 1
Reference
- https://kotlinlang.org/docs/extensions.html#extension-properties
반응형
'프로그래밍 > Kotlin' 카테고리의 다른 글
[Kotlin] infix call (중위 호출) (0) | 2022.03.26 |
---|---|
[Kotlin] vararg(가변인자), spread operator (0) | 2022.03.21 |
[Kotlin] Extension function (확장 함수) (0) | 2022.03.21 |
[Kotlin] map iteration with destructuring (0) | 2022.03.20 |
[Kotlin] Range, Progression (0) | 2022.03.20 |