Назад к вопросам
Junior
82
questionbank

Что такое инлайн-функции?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Инлайн-функции - это функции, которые компилятор встраивает напрямую в код вызова в скомпилированном бинарном файле, вместо генерации стандартного вызова функции.

Преимущества:

  • Производительность: Уменьшает накладные расходы на вызов функции (передача аргументов, управление стеком).
  • Уменьшение бойлерплейта: Часто используется для higher-order functions, избегая создания анонимных классов или объектов для реализации функциональных интерфейсов.

Недостатки:

  • Размер кода: Если инлайн-функция большая или вызывается многократно, код может заметно увеличиться.
  • Совместимость: Не все функции можно инлайнить (например, рекурсивные, содержащие try/catch/finally).

В Kotlin инлайн-функции объявляются с помощью ключевого слова inline:

// Объявление инлайн-функции с лямбда-параметром
inline fun performAction(block: () -> Unit) {
    // Встроенный код will be here
    block() // Вызов лямбды, которая также будет встроена
}

// Использование инлайн-функции
performAction {
    // Действие
}

Инлайнинг лямбд в Kotlin позволяет использовать return из вызывающей функции внутри лямбды, что называется non-local return:

// Пример non-local return
inline fun executeConditional(condition: Boolean, block: () -> Unit) {
    if (condition) {
        block()
    }
    // Код после вызова лямбды
}

fun someFunction() {
    executeConditional(true) {
        // Если условие true, этот return выйдет из someFunction
        return
    }
    // Этот код не выполнится, если condition был true
}