首页 > 解决方案 > 将 `Throwable?` 映射到 `Result` 在 Kotlin 中

问题描述

我正在尝试做的是将 my 映射Throwable?到 aResult.failureResult.success取决于它的存在。

我认为这应该通过以下方式完成:

val a: Throwable? = Throwable()
val b = a?.let { Result.failure<Unit>(it) } ?: Result.success(Unit)

但我得到的错误是:Expression of type kotlin.Result cannot be used as a left operand of '?:'这似乎意味着我的结果let是不可为空的。我不确定这怎么可能?我理解let为类似于map.

标签: dictionarykotlinoptional

解决方案


Result是一个实验inline班,所以它有一些限制。目前,Kotlin 空安全运算符的使用.??:并且!!不允许在可为空和非空 Result 类型上使用。您可以在此处阅读更多相关信息:https ://github.com/Kotlin/KEEP/blob/master/proposals/stdlib/result.md#limitations


推荐阅读