Sobes.tech
Middle

Milyen standard delegáltakat ismersz?

sobes.tech MI

Válasz az MI-től

  • by lazy — a tulajdonság késleltetett inicializálására szolgál. Az érték az első hivatkozáskor kerül kiszámításra és cache-elve lesz.
    val lazyValue: String by lazy {
        println("initialized") // Csak az első hivatkozáskor fut le
        "Hello"
    }
    
  • Delegates.observable — delegált, amely lehetővé teszi, hogy minden változáskor végrehajtson egy műveletet.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("kezdeti érték") {
        prop, old, new ->
        println("${prop.name} értéke megváltozott $old-ról $new-ra")
    }
    
  • Delegates.vetoable — delegált, amely lehetővé teszi, hogy elfogja a tulajdonság értékének változását és letiltsa azt egy feltétel alapján.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Csak nem negatív értékek megengedettek
    }