Sobes.tech
Middle

Кои стандартни делегати знаете?

sobes.tech AI

Отговор от AI

  • by lazy — се използва за отлагана инициализация на свойство. Стойността се изчислява при първия достъп до свойството и се кешира.
    val lazyValue: String by lazy {
        println("initialized") // Ще се изпълни само при първия достъп
        "Hello"
    }
    
  • Delegates.observable — делегат, който позволява да се изпълни действие при всяка промяна на стойността на свойството.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("начална стойност") {
        prop, old, new ->
        println("Стойността за ${prop.name} се промени от $old на $new")
    }
    
  • Delegates.vetoable — делегат, който позволява да се прихване промяната на стойността на свойството и да се отмени въз основа на условие.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Позволяват се само неотрицателни стойности
    }