Ответ
В Kotlin есть несколько стандартных делегатов:
- lazy - инициализация при первом обращении:
val lazyValue: String by lazy {
"Hello"
}
- observable - реагирует на изменения свойства:
var name: String by Delegates.observable("") { _, old, new ->
println("$old -> $new")
}
- vetoable - позволяет отменить изменение:
var age: Int by Delegates.vetoable(0) { _, old, new ->
new > old // только если новое значение больше старого
}
- notNull - бросает исключение при доступе до инициализации:
var notNullStr: String by Delegates.notNull()
Также можно создавать кастомные делегаты, реализуя интерфейсы ReadOnlyProperty или ReadWriteProperty.
Видео-ответы
▶
Собеседование Senior Android разработчика. Часть 1
▶
Тестовое собеседование C# | .NET Middle Mock interview
▶
Тестовое собеседование на .NET Middle разработчика
▶
Меньше 2 лет опыта это Junior или Middle? | Тестовое собеседование C#
▶
Тестовое собеседование C# | .NET Junior Mock interview
▶
Тестовое собеседование ASP.NET Core | Junior .NET Developer
▶
Тестовое собеседование C# | Системный администратор