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), бинобар ин бояд ҳисобшаванда бошанд ( танҳо бо геттер ё бо геттер ва сеттер, аммо бе майдон).
Тавре ки, хосиятҳоро метавон дар берун аз муайянкунии синф тавассути васеъкуниҳо эълон кард, аммо бо маҳдудиятҳо.