Делегируемые свойства — это способ делегировать логику получения (get) и установки (set) значения свойства другому объекту. Это позволяет вынести повторяющийся код и сделать классы более компактными.
Основные компоненты:
ReadOnlyProperty (для val) или ReadWriteProperty (для var). Он содержит логику для getValue() и опционально setValue().by: Ключевое слово в Kotlin, используемое для связывания свойства с его делегатом.Примеры стандартных делегатов:
lazy: Инициализация свойства происходит только при первом доступе к нему.
kotlin
delegates.observable: Выполняет действие после каждого присваивания значения свойству.
kotlin
delegates.vetoable: Позволяет перехватить присваивание значения и отменить его, если условие не выполняется.
kotlin
kotlin
Создание собственных делегатов:
Необходимо реализовать интерфейс ReadOnlyProperty или ReadWriteProperty.
kotlin
Преимущества: