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

Чтение результата в Kotlin

После проверок или цепочки преобразований из Result нужно получить обычное значение. Для этого есть три типичных способа с разным отношением к неудаче.

Функция getOrNull отдает значение при успехе и null, если внутри лежит ошибка. Это мягкий вариант без исключений:

fun loadUnits(text: String): Result<Int> { return runCatching { text.toInt() } } fun main() { val good = loadUnits("5") val bad = loadUnits("five") println(good.getOrNull()) println(bad.getOrNull()) }

Функция getOrElse принимает лямбду и вызывает ее только при неудаче. Возвращаемое из лямбды значение подставляется вместо отсутствующего успеха:

fun loadUnits(text: String): Result<Int> { return runCatching { text.toInt() } } fun main() { val missing = loadUnits("n/a") val units = missing.getOrElse { 0 } println(units) }

Функция getOrThrow возвращает значение при успехе и снова бросает сохраненное исключение, если результат неудачный. Так возвращаются к привычной модели «либо значение, либо сбой наружу»:

fun loadUnits(text: String): Result<Int> { return runCatching { text.toInt() } } fun main() { val ok = loadUnits("12") println(ok.getOrThrow()) val broken = loadUnits("12o") println(broken.getOrThrow()) }

Строка "7" и строка "?" проходят через обертку с toInt. Для каждой получите число или null мягким способом и выведите оба ответа через пробел.

При разборе "abc" в число возьмите запасное значение 100 через лямбду при неудаче. При разборе "9" выведите число жестким способом, который бросает исключение при сбое. Напечатайте оба итога на отдельных строках.

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