Sobes.tech
Junior — Middle

Оё имкон дорад, ки хосиятҳоро дар берун аз муайянкунии синф дар забони Kotlin эълон кард?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin, хосиятҳо одатан дар дохили муайянкунии синф эълон карда мешаванд. Аммо, агар лозим ояд, ки хосиятро берун аз синф илова кунед, метавонед истифодаи васеъкуниҳоро (extension properties) истифода баред.

Васеъкуниҳо имкон медиҳанд, ки хосиятҳо ё функсияҳои нав ба синфҳои мавҷуда илова карда шаванд, бе тағир додани коди манбаъии онҳо.

Масалан, як хосияти васеъкуниро берун аз синф:

class User(val name: String)

// Хосияти васеъкуни берун аз синф
val User.firstChar: Char
    get() = this.name.first()

fun main() {
    val user = User("Anna")
    println(user.firstChar) // Натиҷа 'A'
}

Мухим: хосиятҳои васеъкуни наметавонанд ҳолат дошта бошанд (backing field), бинобар ин бояд ҳисобшаванда бошанд ( танҳо бо геттер ё бо геттер ва сеттер, аммо бе майдон).

Тавре ки, хосиятҳоро метавон дар берун аз муайянкунии синф тавассути васеъкуниҳо эълон кард, аммо бо маҳдудиятҳо.