2011-08-26 81 views
69

比方說,我想使用相同的代碼處理來自遠程服務的多個返回值。我不知道如何在斯卡拉表達這樣的:如何在Scala中匹配多個值?

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

我知道我可以使用提取方法和調用,但還是有重複呼叫。如果我使用紅寶石,我會寫這樣的:

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

注意,我簡單的例子,所以我不想對正則表達式或一些這樣的模式匹配。匹配值實際上是複雜的值。

+0

可能重複階(http://stackoverflow.com/questions/1837754/match-multiple-cases-classes-in-scala) – nawfal

回答

116

你可以這樣做:

,你不能綁定模式名稱的部分
code match { 
    case "1" | "2" => // whatever 
    case "3" => 
} 

注 - 你不能做到這一點目前:

code match { 
    case Left(x) | Right(x) => 
    case null => 
} 
在[匹配多例類的