Como padronizar a correspondência de vários valores em Scala?

85

Digamos que eu queira lidar com vários valores de retorno de um serviço remoto usando o mesmo código. Não sei como expressar isso no Scala:

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

Eu sei que posso usar Extrair Método e chamar isso, mas ainda há repetição na chamada. Se eu estivesse usando Ruby, escreveria assim:

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

Observe que simplifiquei o exemplo, portanto, não quero padronizar a correspondência em expressões regulares ou algo assim. Os valores de correspondência são, na verdade, valores complexos.

François Beausoleil
fonte
possível duplicata de classes Match multiple cases em scala
nawfal

Respostas:

149

Você pode fazer:

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

Observe que você não pode vincular partes do padrão a nomes - você não pode fazer isso atualmente:

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