Назад к вопросам
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
}