Sobes.tech
Middle

Функсияҳои inline дар барномасозӣ барои чӣ истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Барои кам кардани хароҷоти умумии даъвати функсия (сохтани рамзи стек, гузаронидани параметрҳо ва ғ.). Компилятор кодро чунин функсияро бевосита дар ҷойи даъват мегузорад. Ин метавонад андозаи кодиҳоро зиёд кунад, аммо иҷрои онро беҳтар кунад.

Дар Kotlin, функсияҳои inline барои оптимизатсияи lambdas бисёр истифода мешаванд:

// бе inline, lambda объект мешавад, синф сохта мешавад
fun notInline(block: () -> Unit) {
    block()
}

// бо inline, коди lambda дар ҷойи даъват гузошта мешавад
inline fun inlineExample(block: () -> Unit) {
    block()
}

fun main() {
    notInline {
        println("Ин inline нест")
    }

    inlineExample {
        println("Ин inline аст")
    }
}

Истифода маҳдуд аст бо сабаби эҳтимоли зиёд шудани андозаи APK. Барои функсияҳои калон тавсия намешавад.