使用比较运算符匹配元组

Ham*_*riZ 5 scala pattern-matching

我想匹配元组模式,但我找不到任何解决方案如何匹配使用比较运算符.我的代码是:

myTuple  match {       
      case (-1,-1,true) => ...       
      case (_>=0,-1,_) =>  ...
    }
Run Code Online (Sandbox Code Playgroud)

这给出了编译时错误.我也尝试使用if guard,但是我认为它不能以这种方式应用:

 case (_ if _>=0,-1,_) =>  ...
Run Code Online (Sandbox Code Playgroud)

我的方法是正确的还是我应该以不同的方式解决这个问题?谢谢Zoltan

Nic*_*las 9

语法错误,你应该使用如下守护:

myTuple  match {       
  case (-1,-1,true) => ...
  case (x,-1,_) if x >= 0 =>  ...
  case _ => ... // default
}
Run Code Online (Sandbox Code Playgroud)

网上的scala模式匹配有很多很好的介绍.这是第一个详细的,我在谷歌上发现:玩Scala的模式匹配