2011-08-26 21 views
69

Załóżmy, że chcę obsłużyć wiele wartości zwracanych z usługi zdalnej przy użyciu tego samego kodu. Nie wiem, jak wyrazić to w Scala:Jak wzorzec pasuje do wielu wartości w Scali?

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

wiem, że mogę użyć metody wyodrębnić i nazwać, ale jest jeszcze powtórzenie w zaproszeniu. Gdybym użyciu Ruby, chciałbym napisać to tak:

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

pamiętać, że uproszczony przykład, więc nie chcę do wzorca meczu na wyrażeniach regularnych lub coś takiego. Wartości dopasowania są w rzeczywistości wartościami złożonymi.

+0

możliwe duplikat [Dopasuj wielokrotne przypadki klas scala] (http://stackoverflow.com/questions/1837754/match-multiple-cases-classes-in-scala) – nawfal

Odpowiedz

116

można zrobić:

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

pamiętać, że nie może związać części wzoru do nazw - nie możesz tego zrobić obecnie:

code match { 
    case Left(x) | Right(x) => 
    case null => 
} 
Powiązane problemy