Sobes.tech
Middle

Quels délégués standard connaissez-vous?

sobes.tech IA

Réponse de l'IA

  • by lazy — utilisé pour l'initialisation différée d'une propriété. La valeur est calculée lors de la première référence à la propriété et mise en cache.
    val lazyValue: String by lazy {
        println("initialized") // Ne s'exécutera qu'à la première référence
        "Hello"
    }
    
  • Delegates.observable — délégué qui permet d'exécuter une action à chaque changement de la valeur de la propriété.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("valeur initiale") {
        prop, old, new ->
        println("La valeur de ${prop.name} a changé de $old à $new")
    }
    
  • Delegates.vetoable — délégué qui permet d'intercepter le changement de valeur d'une propriété et de l'annuler selon une condition.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Seules les valeurs non négatives sont autorisées
    }