¿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.


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 =>
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.