如何在Scala中简化此表达式?

时间:2014-02-12 15:08:32

标签: scala

我有以下表达式,希望通过了解如何简化它来学习Scala。

val r : Either[Exception, Long] = Right(100)
r fold (_ => (), uuid => account.setAccountUuid(uuid.toString))

是否有可能使它比这更简洁?

谢谢!

3 个答案:

答案 0 :(得分:6)

我的初步答案是r.right foreach (account.setAccountUuid(_.toString))但事实证明它触发了可怕的“扩展函数的缺失参数类型”错误。我应该看到这一个来了。 怎么样:

for (i <- r.right) account.setAccountUuid(i.toString)

答案 1 :(得分:1)

原谅我的troglodytism:

if ( r.isRight ) account.setAccountUuid(r.right.get.toString)

任何内容的可读性都不计算 ???有时Scala社区似乎都热心hammer-holders - 抱歉,我的意思是monad持有者。

更新以更正TravisBrown的捕获(缺少“获取”)。

答案 2 :(得分:0)

r fold (_ => (), account.setAccountUuid(_.toString))