Scala语言保护(if表达式)
示例
案例语句可以与if表达式结合使用,以在模式匹配时提供额外的逻辑。
def checkSign(x: Int): String = { x match { case a if a < 0 => s"$a is a negative number" case b if b > 0 => s"$b is a positive number" case c => s"$c neither positive nor negative" } }
确保您的警卫人员不会产生非详尽的匹配非常重要(编译器通常不会捕获此匹配):
def f(x: Option[Int]) = x match { case Some(i) if i % 2 == 0 => doSomething(i) case None => doSomethingIfNone }
这将引发一个MatchError奇数。您必须考虑所有情况,或使用通配符匹配情况:
def f(x: Option[Int]) = x match { case Some(i) if i % 2 == 0 => doSomething(i) case _ => doSomethingIfNoneOrOdd }