web-dev-qa-db-fra.com

Comment mettre en correspondance plusieurs valeurs dans Scala?

Supposons que je souhaite gérer plusieurs valeurs de retour à partir d'un service distant en utilisant le même code. Je ne sais pas comment l'exprimer en Scala:

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

Je sais que je peux utiliser la méthode d'extraction et l'appeler, mais il y a toujours de la répétition dans l'appel. Si j'utilisais Ruby, je l'écrirais comme ceci:

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

Notez que j'ai simplifié l'exemple, donc je ne veux pas faire de correspondance de motifs sur des expressions régulières ou d'autres. Les valeurs de correspondance sont en fait des valeurs complexes.

80

Tu peux faire:

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

Notez que vous ne pouvez pas lier des parties du motif à des noms - vous ne pouvez pas le faire actuellement:

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