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.


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 =>
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.