dictionary - 将 `Throwable?` 映射到 `Result` 在 Kotlin 中
问题描述
我正在尝试做的是将 my 映射Throwable?
到 aResult.failure
或Result.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
.
解决方案
Result
是一个实验inline
班,所以它有一些限制。目前,Kotlin 空安全运算符的使用.?
,?:
并且!!
不允许在可为空和非空 Result 类型上使用。您可以在此处阅读更多相关信息:https ://github.com/Kotlin/KEEP/blob/master/proposals/stdlib/result.md#limitations
推荐阅读
- python - 如何使用熊猫数据帧上的for循环计算每个唯一值的Levenshtein距离
- c - GMP (MPIR) - 初始化时保持前导零
- firebase - 如何使用 expo-firebase-recaptcha?
- json - Solr 不拆分 JSON
- python - 如何在 Python 中导入前正确调用预加载器函数?
- python - 如何修复错误的输出表单 xpath
- prolog - prolog无向图,如何找到两个人之间的人数?
- ios - 如何从子视图设置父视图仅以编程方式使用不使用 StoryBoard 拖动?
- thymeleaf - 在 thymleaf 中使用 ajax,只更新表单的一部分
- c - 包含从另一个 Makefile 生成的依赖文件时的 Makefile 错误