Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpIlRt 113 of 299 menu
◀ ▶

Возврат из лямбды в Kotlin

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

Такой выход называют нелокальным возвратом. Ниже после печати слова "start" выполнение покидает main, и строка "end" не печатается:

inline fun runBlock(block: () -> Unit) { block() } fun main() { runBlock { println("start") return } println("end") }

Тот же выход годится, чтобы закончить поиск и сразу вернуть найденную строку из функции, которая вызвала встроенный блок:

inline fun runBlock(block: () -> Unit) { block() } fun firstLog(lines: List<String>): String { runBlock { for (line in lines) { if (line.startsWith("log")) { return line } } } return "none" } fun main() { val data = listOf("err:2", "log:1", "log:3") println(firstLog(data)) }

Напишите функцию, которая ищет в списке чисел первое значение больше заданного порога. При находке сразу верните его, иначе верните null. Проверьте на списке с элементами 2, 8, 5 и пороге 4.

Сделайте поиск подстроки в списке слов: функция возвращает первое слово, которое содержит фрагмент "api", или null, если такого нет. Используйте перебор с лямбдой внутри объявления.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить