Delegates.observable и Delegates.vetoable — это property delegates из стандартной библиотеки Kotlin, которые используются для мониторинга и контроля изменений значений свойств.
Delegates.observable уведомляет тебя после того, как значение свойства изменилось. Обработчик получает три параметра: ссылку на свойство, старое значение и новое значение.
var name: String by Delegates.observable("initial") { prop, old, new ->
println("Changed from $old to $new")
}
Delegates.vetoable даёт тебе возможность отклонить изменение свойства до того, как оно будет применено. Обработчик должен вернуть Boolean — true для принятия нового значения, false для отклонения.
var age: Int by Delegates.vetoable(0) { prop, old, new ->
new >= 0 // отклонить отрицательные значения
}
false оставляет свойство с его текущим значением| Функция | observable | vetoable |
|---|---|---|
| Момент времени | После изменения | Перед изменением |
| Может отклонить изменение | Нет | Да |
| Тип возврата | Unit | Boolean |
Delegates.observable когда тебе нужно реагировать на изменения, например синхронизировать состояние или вызывать побочные эффектыDelegates.vetoable когда тебе нужно валидировать или ограничивать какие значения может принимать свойствоDelegates.observable выполняет свой callback после того, как присваивание свойству уже завершено, что делает невозможным предотвращение изменения значения.
Новый — ещё не проверен сообществом
Вы