Sobes.tech
Middle

Koje standardne delegacije poznajete?

sobes.tech АИ

Одговор од АИ

  • by lazy — koristi se za odloženu inicijalizaciju svojstva. Vrednost se računa pri prvom pristupu svojstvu i kešira.
    val lazyValue: String by lazy {
        println("initialized") // Izvršiće se samo pri prvom pristupu
        "Hello"
    }
    
  • Delegates.observable — delegat koji omogućava izvršavanje akcije pri svakoj promeni vrednosti svojstva.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("početna vrednost") {
        prop, old, new ->
        println("Vrednost za ${prop.name} se promenila sa $old na $new")
    }
    
  • Delegates.vetoable — delegat koji omogućava da se presretnu promene vrednosti svojstva i da se one otkažu na osnovu uslova.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Dozvoljene su samo nenegativne vrednosti
    }