Sobes.tech
Middle

Welke standaarddelegates ken je?

sobes.tech AI

Antwoord van AI

  • by lazy — wordt gebruikt voor lazy initialisatie van een eigenschap. De waarde wordt berekend bij de eerste verwijzing naar de eigenschap en wordt in cache opgeslagen.
    val lazyValue: String by lazy {
        println("initialized") // Alleen bij de eerste verwijzing
        "Hello"
    }
    
  • Delegates.observable — delegate die een actie uitvoert bij elke wijziging van de waarde van de eigenschap.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("initiële waarde") {
        prop, old, new ->
        println("Waarde voor ${prop.name} is veranderd van $old naar $new")
    }
    
  • Delegates.vetoable — delegate die het mogelijk maakt om een wijziging van de eigenschap te onderscheppen en te annuleren op basis van een voorwaarde.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Alleen niet-negatieve waarden toegestaan
    }