2011-08-26 13 views
69

Diciamo che voglio gestire più valori di ritorno da un servizio remoto usando lo stesso codice. Non so come esprimere questo a Scala:Come associare più valori in Scala?

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

So che posso utilizzare il metodo Extract e chiamare tale, ma c'è ancora la ripetizione nella chiamata. Se dovessi usare Ruby, mi piacerebbe scrivere in questo modo:

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

Si noti che ho semplificato l'esempio, quindi io non voglio pattern matching sulle espressioni regolari o qualcosa del genere. I valori di corrispondenza sono in realtà valori complessi.

+0

possibile duplicato del [corrispondenti a più casi classi in Scala] (http://stackoverflow.com/questions/1837754/match-multiple-cases-classes-in-scala) – nawfal

risposta

116

Si può fare:

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

Notare che non è possibile associare le parti del modello per i nomi - non si può fare questo al momento:

code match { 
    case Left(x) | Right(x) => 
    case null => 
}