Sobes.tech
Middle

Jakich standardowych delegatów znasz?

sobes.tech AI

Odpowiedź od AI

  • by lazy — używany do opóźnionej inicjalizacji właściwości. Wartość jest obliczana przy pierwszym odwołaniu się do właściwości i jest buforowana.
    val lazyValue: String by lazy {
        println("initialized") // Wykona się tylko przy pierwszym odwołaniu
        "Hello"
    }
    
  • Delegates.observable — delegat, który pozwala wykonać akcję przy każdej zmianie wartości właściwości.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("wartość początkowa") {
        prop, old, new ->
        println("Wartość dla ${prop.name} zmieniła się z $old na $new")
    }
    
  • Delegates.vetoable — delegat, który pozwala przechwycić zmianę wartości właściwości i ją anulować na podstawie warunku.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Dozwolone są tylko nieujemne wartości
    }