Sobes.tech
Middle

Кадом делегатҳои стандартиро мешиносед?

sobes.tech AI

Ҷавоб аз AI

  • by lazy — барои таъхир дар оғоз кардани хусусият истифода мешавад. Қимат дар аввалин муроҷиат ба хусусият ҳисоб карда мешавад ва дар кеш нигоҳ дошта мешавад.
    val lazyValue: String by lazy {
        println("initialized") // Танҳо дар аввалин муроҷиат иҷро мешавад
        "Hello"
    }
    
  • Delegates.observable — делегат, ки имкон медиҳад, ки дар ҳар тағирёбии арзиши хусусият амал иҷро шавад.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("аввалин арзиш") {
        prop, old, new ->
        println("Арзиши барои ${prop.name} аз $old ба $new тағир ёфт")
    }
    
  • Delegates.vetoable — делегат, ки имкон медиҳад, тағирёбии арзиши хусусиятро дар бар алоқаманд кардан ва рад кардан дар асоси шарте.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Танҳо арзишҳои манфӣ иҷозат дода мешаванд
    }