SCALA - 在匹配

时间:2017-07-11 17:13:07

标签: scala

目前我有:

val bar = "good"
val foo = bar match {
            case "good" => "GREAT"
            case _ => "BAD"
          }

我想在 case 中使用另一个变量作为条件,如下所示:

val x = 5
val bar = "good"
val foo = bar match {
        case "good" and x = 5 => "GREAT"
        case _ => "BAD"
      }

尝试但没有奏效:

val x = 5
val bar = "good"
val foo = bar match {
        case y if (y == "good" && x == 5) => "GREAT"
        case _ => "BAD"
      }

这样的事情可能吗? 感谢。

2 个答案:

答案 0 :(得分:5)

你所写的"尝试但没有工作",实际应该工作。不确定你的问题是什么。 下次,请粘贴一个实际的错误消息,而不是只是说"它没有工作"。

您还可以匹配元组:

val x = 5
val bar = "good"
val foo = (bar, x) match {
   case ("good", 5) => "GREAT"
   case _ => "BAD"
}

答案 1 :(得分:3)

你几乎拥有它。

val foo = bar match {
  case "good" if x == 5 => "GREAT"
  case _ => "BAD"
}