더북(TheBook)

확장 프로퍼티에는 커스텀 게터가 필요하다. 확장 프로퍼티에 접근할 때마다 프로퍼티 값이 계산된다.

ExtensionProperties/StringIndices.kt

package extensionproperties
import atomictest.eq

val String.indices: IntRange
  get() = 0 until length

fun main() {
  "abc".indices eq 0..2
}

파라미터가 없는 확장 함수는 항상 확장 프로퍼티로 변환할 수 있지만, 먼저 그래도 될지 생각해보는 것이 좋다. ‘아톰 28, 프로퍼티 접근자’에서 프로퍼티와 함수 중 하나를 선택하는 기준에 대해 설명한 내용이 확장 프로퍼티에도 적용된다. 기능이 단순하고 가독성을 향상시키는 경우에만 프로퍼티를 권장한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.