如何确定if语句中哪个条件为假

时间:2019-09-05 21:27:17

标签: scala if-statement conditional-statements

我有一个if语句,如下所示:

if(a > b && b < c) && (c > d && d < e) && (e > f && f < g)

是否有办法找出Scala 2.12中if语句中哪个特定条件为假?例如(c > d && d < e)为假,或简单地(e > f)为假。

2 个答案:

答案 0 :(得分:3)

您可以使用模式匹配代替if
像这样:

((a > b), (b < c), (c > d), (d < e), (e > f), (f < g)) match {
  case (false, false, false, false, false) => // all failed.
  case (false, false, false, false, true) => // all but last failed.
  ...
  case (true, true, true, true, true) => // all succeed.
}

您可以根据具体问题调整逻辑。

答案 1 :(得分:0)

val r = Seq(a > b && b < c, c > d && d < e, e > f && f < g)
if (!reduce(_ && _)) println(r.indexOf(false))

或。找到所有的人

r.zipWithIndex.filter(!_._1).map(_._2)