Scala - 复杂条件模式匹配

时间:2011-07-24 00:36:19

标签: scala pattern-matching

我有一个我要表达的声明,在C伪代码中看起来像这样:

switch(foo):
    case(1)
        if(x > y) {
            if (z == true)
                doSomething()
            }
            else {
                doSomethingElse()
            }
        return doSomethingElseEntirely()

    case(2)
        essentially more of the same

使用scala模式匹配语法是否可行?

1 个答案:

答案 0 :(得分:44)

如果您想在单个match语句中处理多个条件,您还可以使用 guards ,它允许您为案例指定其他条件:

foo match {    
  case 1 if x > y && z => doSomething()
  case 1 if x > y => doSomethingElse()
  case 1 => doSomethingElseEntirely()
  case 2 => ... 
}