Что такое нелокальный return?



В Котлин non-local return — это механизм, который позволяет выйти из внешней функции или лямбда-выражения и вернуться к вызывающему коду, обходя оставшуюся часть текущей функции или лямбда-выражения. Он работает по-разному в зависимости от того, является ли функция inline или не-inline.



В не-inline функциях:



Если внутри функции есть лямбда-выражение, non-local return из лямбда-выражения может привести к нелокальному завершению внешней функции.



Для использования non-local return внутри лямбда-выражения в не-inline функции, необходимо использовать метку (label) и оператор
return@label.



В inline-функциях:



В inline-функциях, лямбда-выражения становятся частью кода функции и имеют локальный контроль над потоком управления.



Оператор
return внутри лямбда-выражения в inline-функции приведет только к завершению самого лямбда-выражения, не влияя на внешнюю функцию.