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

Преобразование результата в Kotlin

Функция map на Result применяет лямбду только к успешному значению. Неудача проходит дальше без изменений, новая лямбда для нее не вызывается:

fun main() { val base = Result.success(4) val squared = base.map { it * it } println(squared) val failed = Result.failure<Int>(IllegalArgumentException("bad")) val skipped = failed.map { it + 1 } println(skipped) }

Цепочку удобно строить после обертки над рискованным шагом: сначала получаем число, затем считаем производную величину в том же стиле:

fun main() { val raw = "6" val label = runCatching { raw.toInt() } .map { "item-$it" } println(label) }

Функция mapCatching работает как map, но ловит исключение внутри лямбды преобразования. Сбой в блоке снова становится неудачным Result, а не летит наружу:

fun main() { val ok = Result.success(10) val safe = ok.mapCatching { it / 2 } println(safe) val zero = Result.success(0) val trap = zero.mapCatching { 100 / it } println(trap) }

Из строки "15" получите Result с числом, затем постройте строку "code-15" в цепочке без if. Выведите итоговый Result.

Успешный Result с числом 8 пропустите через шаг, где из строки "8" берется символ по индексу 20. Покажите, что сбой остается внутри Result, и выведите объект.

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