我希望以下 kotlin 代码能够正常工作:
val result: Try<Option<String>> = Success(Some("test"))
val test = when {
result is Success && result.value is Some -> result.value.t // not working
result is Success && result.value is None -> "Empty result"
result is Failure -> "Call failed!"
else -> "no match!"
}
我将箭头库用于 Try 和 Option monad。
不幸的是,我只能访问第一个条件“is Success”的值,而不能访问第二个条件“is Some”的值。所以,我只能做“result.value”,然后我得到一个字符串选项。
我错过了什么吗?这将为我节省很多内部“.map”和“.fold”调用。
更新:
我需要先投射它,这很难看:
result is Success && result.value is Some -> (result.value as Some<String>).t