Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Делегированные свойства — это свойства, которые не хранят своё значение напрямую, а делегируют это значение другому объекту, который реализует интерфейс
Delegate. При доступе к свойству, его значение запрашивается у делегата, который может выполнить какую-то дополнительную логику, а затем вернуть требуемое значение. Пример:class Example {
var p: String by Delegate()
}Ключевое слово
by используется для обозначения свойств, методы чтения и записи которых реализованы другим объектом, который называют делегатом.Синтаксис выглядит так:
val/var <имя свойства>: <Тип> by <выражение>. Выражение после by — делегат, потому что обращения get(), set() к свойству будут делегированы его методам getValue() и setValue(). Делегат не обязан реализовывать какой-то интерфейс, достаточно, чтобы у него были метод getValue() (и setValue() для var'ов) с определённой сигнатурой.В Kotlin существуют несколько встроенных делегатов для работы с делегированными свойствами:
lazy() — позволяет создавать лениво инициализированные свойстваobservable() — позволяет реагировать на изменения свойстваvetoable() — позволяет отклонять изменения значения свойства на основе заданного условияnotNull() — гарантирует, что свойство не будет иметь значение nullmap() — позволяет хранить значения свойств в словаре (Map)Кроме того, в Kotlin можно создавать свои собственные делегаты, реализуя интерфейс
ReadOnlyProperty или ReadWriteProperty. Это дает возможность создавать кастомные поведения для свойств, например, кеширование значений или логирование операций чтения/записи.🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст #JuniorKit #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM