为什么不在Try上映射,在这种情况下删除Try

时间:2016-11-04 15:25:37

标签: scala

// redis.get(key) returns a Option[A]

redis.get(key).map(x => Try(x.toInt)).map(counter => doSomething(counter))

我收到错误,因为doSomething想要一个Int,但我传递了一个Try [Int]。

我认为Try上的映射会将其删除,但它似乎无法正常工作。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

Parens在错误的地方。正如Michael Zajac所说,你正在映射Option,而不是Try

修正:

redis.get(key).map(x => Try(x.toInt).map(counter => doSomething(counter)))

答案 1 :(得分:0)

BTW您也可以像这样写上面的表达式。尝试将为您捕捉异常。

Try(redis.get(key).get.toInt)