¿Cómo hacer coincidir el patrón de varios valores en Scala?

85

Digamos que quiero manejar múltiples valores de retorno de un servicio remoto usando el mismo código. No sé cómo expresar esto en Scala:

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

Sé que puedo usar Extract Method y llamar a eso, pero todavía hay repetición en la llamada. Si estuviera usando Ruby, lo escribiría así:

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

Tenga en cuenta que simplifiqué el ejemplo, por lo que no quiero emparejar patrones en expresiones regulares o algo así. Los valores de coincidencia son en realidad valores complejos.

François Beausoleil
fuente
posible duplicado de las clases Match multiple cases en scala
nawfal

Respuestas:

149

Tu puedes hacer:

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

Tenga en cuenta que no puede vincular partes del patrón a nombres; no puede hacer esto actualmente:

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