Sobes.tech
Middle

Akých štandardných delegátov poznáte?

sobes.tech AI

Odpoveď od AI

  • by lazy — sa používa na odloženú inicializáciu vlastnosti. Hodnota sa vypočíta pri prvom prístupe k vlastnosti a je uložená v cache.
    val lazyValue: String by lazy {
        println("initialized") // Bude vykonané iba pri prvom prístupe
        "Hello"
    }
    
  • Delegates.observable — delegát, ktorý umožňuje vykonať akciu pri každej zmene hodnoty vlastnosti.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("počiatočná hodnota") {
        prop, old, new ->
        println("Hodnota pre ${prop.name} sa zmenila z $old na $new")
    }
    
  • Delegates.vetoable — delegát, ktorý umožňuje zachytiť zmenu hodnoty vlastnosti a zrušiť ju na základe podmienky.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Povolené sú iba nezáporné hodnoty
    }