Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: inline, noinline, crossinline, lambda, optimization

В чём разница между inline, noinline и crossinline?

Проверяет знание оптимизаций и ограничений при инлайнинге функций и лямбд в Kotlin.

Короткий ответ

inline заставляет компилятор встраивать тело функции и её лямбд в место вызова, избавляя от создания объектов. noinline отключает инлайнинг для конкретного параметра-лямбды внутри inline-функции. crossinline запрещает использование return из лямбды, гарантируя, что она не будет немедленно вызывать выход из родительской функции.

Длинный ответ

inline fun:

  • Встраивает тело в место вызова, убирая оверхед вызова и аллокации лямбды.

noinline:

  • Используется для лямбд-параметров, которые не надо инлайнить (например, передающиеся дальше).

crossinline:

  • Запрещает нелокальный return из лямбды, чтобы компилятор мог её безопасно инлайнить в другие контексты.

Пример:

inline fun measure(block: () -> Unit, noinline onError: (Throwable) -> Unit) {
    	try {
        	block()
    	} catch (e: Throwable) {
        	onError(e)
    	}
}

inline fun runWithCallback(crossinline callback: () -> Unit) {
    	val runnable = Runnable { callback() }
    	Thread(runnable).start()
}

Когда использовать:

  • inline — для высокочастотных коротких функций с лямбдами.

  • noinline — когда лямбда хранится или передаётся дальше.

  • crossinline — когда нельзя допустить return из лямбды.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#inline

#noinline

#crossinline

#lambda

#optimization

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.