Геттер get
Геттер get определяет поведение при чтении значения свойства.
Он вызывается каждый раз, когда происходит обращение к свойству.
Геттер может содержать произвольную логику вычисления значения,
а также выполнять дополнительные действия.
Синтаксис
var propertyName: Type = initialValue
get() {
// логика получения значения
return computedValue
}
val propertyName: Type
get() {
// логика получения значения
return computedValue
}
var propertyName: Type = initialValue
get() = computedValue
Пример
Создадим свойство с геттером, который возвращает вычисляемое значение:
val numbers = listOf(1, 2, 3, 4, 5)
val sizeDescription: String
get() = "List contains ${numbers.size} elements"
println(sizeDescription)
Результат выполнения кода:
String "List contains 5 elements"
Пример
Использование геттера с field для модификации
значения при чтении:
var price: Double = 100.0
get() {
return field * 1.2 // добавляем НДС 20%
}
println(price)
Результат выполнения кода:
Double 120.0
Пример
Геттер для свойства только для чтения с вычисляемым значением:
val userName = "john_doe"
val displayName: String
get() = userName.replace("_", " ").capitalize()
println(displayName)
Результат выполнения кода:
String "John doe"
Пример
Сокращенный синтаксис геттера для однострочных выражений:
val items = listOf('a', 'b', 'c', 'd', 'e')
val firstItem: Char
get() = items.first()
println(firstItem)
Результат выполнения кода:
Char 'a'
Пример
Геттер с дополнительной логикой и проверками:
var score: Int = 85
get() {
if (field < 0) {
return 0
}
if (field > 100) {
return 100
}
return field
}
println(score)
score = 150
println(score)
Результат выполнения кода:
Int 85
Int 100