Sobes.tech
Middle

Que delegados padrão conhece?

sobes.tech IA

Resposta da IA

  • by lazy — usado para inicialização preguiçosa de uma propriedade. O valor é calculado na primeira referência à propriedade e é armazenado em cache.
    val lazyValue: String by lazy {
        println("initialized") // Será executado apenas na primeira referência
        "Hello"
    }
    
  • Delegates.observable — delegado que permite executar uma ação a cada alteração do valor da propriedade.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("valor inicial") {
        prop, old, new ->
        println("Valor alterado para ${prop.name} de $old para $new")
    }
    
  • Delegates.vetoable — delegado que permite interceptar a alteração do valor de uma propriedade e cancelá-la com base em uma condição.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Apenas valores não negativos são permitidos
    }