ini*_*max 2 scala scala-collections
我有关于代码装饰的问题.
例如,我应该处理来自DAO的对象
val user1 = DAO.get(token)
val user2 = DAO.get(token)
val user3 = DAO.get(token)
Run Code Online (Sandbox Code Playgroud)
接下来我应该检查user.isDefined
if (user1.isEmpty || user2.isEmpty || user3.isEmpty ) {
return "error..."
}
else {
...
}
Run Code Online (Sandbox Code Playgroud)
提到的代码看起来像命令式的风格,它可以更具功能性吗?如何更改功能?
BR!
假设DAO.get返回a Option[User],您可以使用for comprehension来指定如果所有3个选项都是a,应该发生什么Some.然后,用于getOrElse指定否则应该发生的事情.
val success: Option[String] = for {
x <- DAO.get(token)
y <- DAO.get(token)
z <- DAO.get(token)
} yield "retrieved 3 users"
success getOrElse "error"
Run Code Online (Sandbox Code Playgroud)