В Котлине есть правило - return
всегда возвращается из fun
.Можно использовать return@<label/function name>
для возврата из функции или лямбды.
Далее идет inline fun
.Встроенные функции не являются реальными функциями, они встроены в сайт вызова, таким образом, можно сделать возврат изнутри лямбды, которая является параметром для такой функции (есть много примеров этого в стандартной библиотеке)
Подводя итог:
inline fun bar(a: () -> Unit) { a() }
fun buz() : Int {
bar { return 42 } /// such return is only possible to inline fun
return 10
}
val x = buz() /// will be 42
bar { if (something) return@bar }
здесь мы возвращаемся из лямбды, а не из функции.