Sobes.tech
Middle

Milliseid standardesed delegaate teate?

sobes.tech AI

Vastus AI-lt

  • by lazy — kasutatakse omaduse hilinenud initsialiseerimiseks. Väärtus arvutatakse esimesel viitel omadusele ja salvestatakse vahemällu.
    val lazyValue: String by lazy {
        println("initialized") // Toimib ainult esimesel viitel
        "Hello"
    }
    
  • Delegates.observable — delegaat, mis võimaldab iga omaduse väärtuse muutmisel teha tegevust.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("algväärtus") {
        prop, old, new ->
        println("${prop.name} väärtus muutus ${old}lt ${new}ni")
    }
    
  • Delegates.vetoable — delegaat, mis võimaldab vahele võtta omaduse väärtuse muutmise ja selle tühistada teatud tingimuse põhjal.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Lubatud ainult mitte-negatiivsed väärtused
    }