tgoop.com/mobileproglib/6331
Last Update:
Лямбда-выражения определяются заключением их в фигурные скобки в виде { параметры -> тело }
.
Анонимные функции определяются через ключевое слово fun
как обычные функции, хотя не имеют имени.return
без меткиreturn
без метки приводит к возврату из обрамляющей (внешней) функции, а не из самого лямбда-выражения (т.е. полностью завершает работу этой функции и код, указанный после оператора return
никогда не выполнится). Это называется нелокальным возвратом (non-local return), и может иметь неожиданное поведение и привести к ошибкам. В лямбда-выражениях рекомендуется использовать метки для явного указания точки возврата.return
.
Таким образом, поведение оператора return
без метки различается только в том, как завершается выполнение функции, в которой вызывается выражение. В лямбда-выражении, вызывающая функция завершается полностью, а в анонимной функции только сама анонимная функция.return
с меткой
Оператор return
с меткой позволяет указать точное место, из которого нужно вернуться при вызове return
.return@label
в лямбда-выражении, то возврат будет осуществляться из конкретной лямбды, к которой применена метка. Вместо нелокального возврата, который происходит при использовании return
без метки, return
с меткой завершит только ту лямбду, которая соответствует указанной метке, и выполнение кода продолжится после этой лямбды во внешней функции. Метка позволяет читать и понимать код проще, так как явно указывает, откуда происходит возврат.return
без метки уже осуществляет возврат из самой анонимной функции. Однако, при использовании метки return@label
вы также можете контролировать возврат из анонимной функции в сложных сценариях (например, при работе с несколькими вложенными функциями).
В обоих случаях использование оператора return
с меткой показывает точку возврата и делает код более явным и контролируемым.
Библиотека мобильного разработчика
#буст #JuniorKit #Kotlin