Sobes.tech
Middle

Kokius standartinius delegatus žinote?

sobes.tech AI

Atsakymas iš AI

  • by lazy — naudojama vėluojamai savybės inicializacijai. Vertė apskaičiuojama pirmą kartą kreipiantis į savybę ir saugoma talpykloje.
    val lazyValue: String by lazy {
        println("initialized") // Bus vykdoma tik pirmą kartą kreipiantis
        "Hello"
    }
    
  • Delegates.observable — delegatas, leidžiantis vykdyti veiksmą kiekvieną kartą keičiant savybės reikšmę.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("pradinė reikšmė") {
        prop, old, new ->
        println("${prop.name} reikšmė pasikeitė iš $old į $new")
    }
    
  • Delegates.vetoable — delegatas, leidžiantis perimti savybės reikšmės keitimą ir jį atšaukti pagal tam tikrą sąlygą.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Leidžiamos tik neigiamai reikšmės
    }