Sobes.tech
Middle

Quali delegati standard conosci?

sobes.tech AI

Risposta dell'AI

  • by lazy — viene utilizzato per l'inizializzazione ritardata di una proprietà. Il valore viene calcolato alla prima referenza alla proprietà e memorizzato nella cache.
    val lazyValue: String by lazy {
        println("initialized") // Verrà eseguito solo alla prima referenza
        "Hello"
    }
    
  • Delegates.observable — delegato che permette di eseguire un'azione ad ogni modifica del valore della proprietà.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("valore iniziale") {
        prop, old, new ->
        println("Il valore di ${prop.name} è cambiato da $old a $new")
    }
    
  • Delegates.vetoable — delegato che permette di intercettare il cambiamento del valore di una proprietà e di annullarlo in base a una condizione.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Sono ammessi solo valori non negativi
    }