首页 文章

如何模式匹配Scala中的多个值?

提问于
浏览
74

假设我想使用相同的代码处理来自远程服务的多个返回值 . 我不知道如何在Scala中表达这一点:

code match {
  case "1" => // Whatever
  case "2" => // Same whatever
  case "3" => // Ah, something different
}

我知道我可以使用Extract Method并调用它,但是在调用中仍然有重复 . 如果我使用Ruby,我会这样写:

case code
when "1", "2"
  # Whatever
when "3"
  # Ah, something different
end

请注意,我简化了示例,因此我不想在正则表达式上进行模式匹配等 . 匹配值实际上是复数值 .

1 回答

  • 128

    你可以做:

    code match {
      case "1" | "2" => // whatever
      case "3" =>
    }
    

    请注意,您无法将模式的某些部分绑定到名称 - 您目前无法执行此操作:

    code match {
      case Left(x) | Right(x) =>
      case null =>
    }
    

相关问题