Что такое return в inline

«Что такое return в inline» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin return в inline-функции ведёт себя по-особому: он возвращает из внешней функции, а не только из лямбды. Это называется нелокальный возврат (non-local return).

inline fun doSomething(action: () -> Unit) {
    action()
}

fun main() {
    doSomething {
        println("Before return")
        return // Выход из main(), а не только из лямбды!
    }
    println("This won't be printed")
}

Если нужно вернуться только из лямбды, используйте return@label (локальный возврат).

doSomething {
    println("Before return")
    return@doSomething // Выход только из лямбды
}