Jak dopasować wzorzec wielu wartości w Scali?

85

Powiedzmy, że chcę obsłużyć wiele wartości zwracanych z usługi zdalnej przy użyciu tego samego kodu. Nie wiem, jak to wyrazić w Scali:

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

Wiem, że mogę użyć metody wyodrębniania i wywołać ją, ale połączenie nadal jest powtarzane. Gdybym używał Rubiego, napisałbym to tak:

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

Zwróć uwagę, że uprościłem przykład, dlatego nie chcę dopasowywać wzorców do wyrażeń regularnych lub podobnych. Wartości dopasowania są w rzeczywistości wartościami złożonymi.

François Beausoleil
źródło
możliwy duplikat klas Dopasuj wiele przypadków w
scali

Odpowiedzi:

149

Możesz to zrobić:

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

Zauważ, że nie możesz wiązać części wzorca z nazwami - nie możesz tego obecnie zrobić:

code match {
  case Left(x) | Right(x) =>
  case null =>
}
axel22
źródło