Sobes.tech
Middle

Qaysi standart delegatlarni bilasiz?

sobes.tech AI

AIdan javob

  • by lazy — xususiyatning kechiktirilgan boshlanishi uchun ishlatiladi. Qiymat birinchi murojaatdan so'ng hisoblanadi va keshga olinadi.
    val lazyValue: String by lazy {
        println("initialized") // Faqat birinchi murojaatda bajariladi
        "Hello"
    }
    
  • Delegates.observable — har bir xususiyat o'zgarishida amal bajarishga imkon beradigan delegat.
    import kotlin.properties.Delegates
    
    var name: String by Delegates.observable("initial value") {
        prop, old, new ->
        println("${prop.name} uchun qiymat $old dan $new ga o'zgardi")
    }
    
  • Delegates.vetoable — xususiyat qiymatini o'zgartirishni ushlab turadigan va shartga asoslangan holda rad etadigan delegat.
    import kotlin.properties.Delegates
    
    var age: Int by Delegates.vetoable(10) {
        prop, old, new ->
        new >= 0 // Faqat manfiy bo'lmagan qiymatlar ruxsat etiladi
    }