Sobes.tech
Middle

¿Qué delegados estándar conoces?

sobes.tech AI

Respuesta de la IA

  • by lazy — se usa para la inicialización diferida de una propiedad. El valor se calcula en la primera referencia a la propiedad y se almacena en caché.
    val lazyValue: String by lazy {
        println("initialized") // Solo se ejecuta en la primera referencia
        "Hello"
    }
    
  • Delegates.observable — delegado que permite realizar una acción en cada cambio del valor de la propiedad.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("valor inicial") {
        prop, old, new ->
        println("El valor de ${prop.name} cambió de $old a $new")
    }
    
  • Delegates.vetoable — delegado que permite interceptar el cambio de valor de una propiedad y cancelarlo en función de una condición.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Solo se permiten valores no negativos
    }