Sobes.tech
Junior — Middle

Kotlin-ში გაფართოების ფუნქცია ყოველთვის სტატიკური არის განხორციელების დროს?

sobes.tech AI

პასუხი AI-სგან

Әйе, Kotlinда киңәйтү функцияләре JVM байткод дәрәҗәсендә статик ысуллар булып үтәлә. Алар синтаксис буенча бар булган классларга өстәлгән ысуллар кебек күренсә дә, чынлыкта алар классны үзгәртмиләр һәм шәхси әгъзаларга керү мөмкинлегенә ия түгелләр.

Бу, киңәйтү функциясе эчендә, гадәти ысуллар кебек, класс үрнәгенә (this) сылтама булмавын аңлата. Аның урынына, киңәйтү функциясенең беренче параметры ул кулланылган объект.

Мисал:

fun String.lastChar(): Char = this.get(this.length - 1)

Байткодта бу статик ысул итеп күренә, ул String объектыны параметр итеп ала.

Шулай итеп, Kotlinда киңәйтү функцияләре һәрвакыт статик булып тора, хәтта алар үрнәк ысуллар кебек күренә.