Scala - 与条件语句匹配的模式?

时间:2011-07-19 00:02:02

标签: scala pattern-matching

是否可以执行以下操作:

def foo(x: Int): Boolean = {
    case x > 1 => true
    case x < 1 => false
}

3 个答案:

答案 0 :(得分:26)

def foo(x: Int): Boolean = 
    x match {
        case _ if x > 1 => true
        case _ if x < 1 => false
    }

请注意,您没有x == 1但是......

的情况

答案 1 :(得分:2)

我会写这样的东西:

def foo(x: Int) = if (x > 1) true
                  else if (x < 1) false
                  else throw new IllegalArgumentException("Got " + x)

答案 2 :(得分:0)

由于您的示例中缺少x == 1的情况,我认为它的处理方式与x < 1相同。

你可以这样做:

def foo(x:Int):Boolean = (x - 1).signum match {
  case 1 => true
  case _ => false
}

但是,这当然可以简化很多:

def foo(x:Int) = (x - 1).signum == 1