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.
scala
pattern-matching
François Beausoleil
źródło
źródło
Odpowiedzi:
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 => }
źródło