var name: String? = null
get() = field?.toUpperCase()
set(value) {
if (!value.isNullOrBlank()) {
field = value
}
}
field
는 프로퍼티의 데이터를 저장해 두는 백킹 필드(backing field)에 대한 레퍼런스다.
val
로 읽기 전용 프로퍼티를 만들 땐 field
가 만들어지지 않는다.Date
타입이었던 프로퍼티가 mills
라는 별도 프로퍼티로 리팩터링된 경우, 외부에 date
프로퍼티를 참조하는 다른 코드들에 대응하는 예제var date: Date
get() = Date(mills)
set(value) {
mills = value.time
}
interface Person {
val name: String
}
val Context.preferences: SharedPreferences
get() = PreferenceManager.getDefaultSharedPreferences(this)
val Tree<Int>.sum: Int
get() = when(this) {
is Leaf -> value
is Node -> left.sum + right.sum
}