我有以下表达式,希望通过了解如何简化它来学习Scala。
val r : Either[Exception, Long] = Right(100)
r fold (_ => (), uuid => account.setAccountUuid(uuid.toString))
是否有可能使它比这更简洁?
谢谢!
答案 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))