我有一个if语句,如下所示:
if(a > b && b < c) && (c > d && d < e) && (e > f && f < g)
是否有办法找出Scala 2.12中if语句中哪个特定条件为假?例如(c > d && d < e)
为假,或简单地(e > f)
为假。
答案 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)