Поле field
Ключевое слово field
используется внутри
сеттера пользовательского свойства для обращения
к его исходному (резервному) значению. Оно позволяет
получить доступ к данным свойства до изменения
или после него. field
доступно только
в пределах геттера или сеттера свойства.
Синтаксис
var propertyName: Type = initialValue
get() = field
set(value) {
field = value
}
val propertyName: Type
get() = field
Пример
Создадим свойство с пользовательским сеттером,
который использует field
для доступа
к исходному значению:
var count: Int = 0
set(value) {
println("Old value: $field")
field = value
println("New value: $field")
}
count = 5
Результат выполнения кода:
Old value: 0
New value: 5
Пример
Использование field
для добавления
валидации при установке значения:
var age: Int = 0
set(value) {
if (value >= 0) {
field = value
} else {
println("Age cannot be negative")
}
}
age = 25
println(age)
age = -5
println(age)
Результат выполнения кода:
25
Age cannot be negative
25
Пример
Использование field
в вычисляемом свойстве:
var name: String = ""
get() = field.uppercase()
set(value) {
field = value.trim()
}
name = " john "
println(name)
Результат выполнения кода:
String "JOHN"
Пример
Использование field
для свойства
только для чтения:
val computedValue: Int
get() = field * 2
// Это вызовет ошибку компиляции
// computedValue = 10
Результат выполнения кода:
Compilation error: Backing field is not accessible