Scala使多个选项检查更简洁

blu*_*iel 4 scala playframework playframework-2.0

使用Scala和Play Framework中的选项,是否有更简洁的方法来检查x数量的变量?

if (a.isDefined || b.isDefined || c.isDefined || d.isDefined ...) {

}
Run Code Online (Sandbox Code Playgroud)

一个衬垫是否(a,b,c,d).isDefined可能?

谢谢

End*_*Neu 13

在我的头顶,可能有一个更好的方式:

List(a, b, c, d).exists(_.isDefined)
Run Code Online (Sandbox Code Playgroud)

对于ands(来自Rob Starling评论):

List(a, b, c, d).forall(_.isDefined)
Run Code Online (Sandbox Code Playgroud)

您还可以拥有更复杂的条件组合:

// (a || b) && (c || d)
List(
  List(a, b).exists(_.isDefined), 
  List(c, d).exists(_.isDefined)
).forall(identity)

// (a && b) || (c && d)
List(
  List(a, b).forall(_.isDefined), 
  List(c, d).forall(_.isDefined)
).exists(identity)
Run Code Online (Sandbox Code Playgroud)

等等.

  • 如果你需要`和`而不是`或`,那就是`List(a,b,c,d).forall(_.isDefined)` (4认同)