Scala 为什么';t在Try上映射在这种情况下删除Try
我得到一个错误,因为doSomething需要一个Int,但我通过了Try[Int] 我以为在Try上映射会删除它,但它似乎不起作用Scala 为什么';t在Try上映射在这种情况下删除Try,scala,Scala,我得到一个错误,因为doSomething需要一个Int,但我通过了Try[Int] 我以为在Try上映射会删除它,但它似乎不起作用 我在这里遗漏了什么?帕伦斯在错误的地方。正如Michael Zajac所说,您映射的是选项,而不是Try 固定的: // redis.get(key) returns a Option[A] redis.get(key).map(x => Try(x.toInt)).map(counter => doSomething(counter)) 顺便说一
我在这里遗漏了什么?帕伦斯在错误的地方。正如Michael Zajac所说,您映射的是
选项,而不是Try
固定的:
// redis.get(key) returns a Option[A]
redis.get(key).map(x => Try(x.toInt)).map(counter => doSomething(counter))
顺便说一句,你也可以这样写上面的表达式。Try将为您捕获异常
redis.get(key).map(x => Try(x.toInt).map(counter => doSomething(counter)))
您正在映射选项
,而不是尝试
。我的第一个映射是选项[A],然后我的第二个映射是尝试,不是吗?您正在将选项[A]
映射到选项[Try[Int]
。您希望得到的整个表达式的类型是什么?即使有正确的括号,您也会得到一个选项[Try[Int]]
,这就是您想要的吗?
Try(redis.get(key).get.toInt)