Чӣ гуна функсияҳои васеъкунӣ дар Kotlin кор мекунанд?
sobes.tech AI
Ҷавоб аз AI
Функсияҳои васеъкунӣ имкон медиҳанд, ки функсияҳои нав ба синфҳои мавҷуда илова шаванд, бе мерос гирифтан ё истифодаи декораторҳо.
Онҳо бо истифода аз пешфикр, ки намоишгари навъи, ки васеъ карда мешавад, нишон медиҳад, эълон карда мешаванд:
fun String.removeFirstChar(): String {
// this ба объекти навъи васеъшуда (String) ишора мекунад
return this.substring(1)
}
Ҳангоми даъвати функсияи васеъкунӣ, компилятор онро ба як методи статикӣ табдил медиҳад, ки ҳамчун аввалин аргумент объекти навъи васеъшуда қабул мекунад:
// Даъвати функсияи васеъкунӣ
val original = "Hello"
val modified = original.removeFirstChar()
// Компилятор тақрибан чунин табдил медиҳад:
// val modified = StringExtensionsKt.removeFirstChar(original)
(Куда StringExtensionsKt номи синфи Kotlin-ро дорад, ки бо методҳои статикӣ тавлид шудааст, агар функсияи васеъкунӣ дар берун аз синф бошад.)
Функсияҳои васеъкунӣ синфи худро тағир намедиҳанд. Онҳо танҳо шакли синтаксиси шакарро барои даъвати методҳои статикӣ пешниҳод мекунанд. Онҳо ба аъзои хусусӣ ё муҳофизатшудаи синф дастрасӣ надоранд.
Умдаи бартарӣ — коди хонданашон осонтар, ки имитатсияи барномасозии объектӣ мебошад, ва дар ҳоле ки масоили меросро пешгирӣ мекунад.
Ҳар синфро метавон васеъ кард, аз ҷумла китобхонаҳои стандартӣ ва синфҳои Java. Функсияҳои васеъкунӣ метавонанд аъзои синфи дигар бошанд, пас онҳо танҳо дар дохили он синф даъват карда мешаванд.
Дар ҳалли боркунии баробар ва низоъҳо, афзалият ба функсияҳои аъзои синф дода мешавад, нисбат ба функсияҳои васеъкунӣ. Агар чанд функсияи васеъкунӣ бо имзоҳои якхела бошанд, онҳое, ки маҳаллии (дар ҳамон доираи назар) эълон шудаанд, афзалият доранд.