2011-08-26 2 views
69

Disons que je veux gérer plusieurs valeurs de retour d'un service distant en utilisant le même code. Je ne sais pas comment exprimer cela dans Scala:Comment modéliser des valeurs multiples dans Scala?

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

Je sais que je peux utiliser la méthode d'extraction et d'appeler, mais il y a encore la répétition dans l'appel. Si j'utilisais Ruby, je l'écrire comme ceci:

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

Notez que j'ai simplifié l'exemple, donc je ne veux pas match de motif sur des expressions régulières ou une telle. Les valeurs de correspondance sont en réalité des valeurs complexes.

+0

double possible de [correspondre aux multiples cas des cours de scala] (http://stackoverflow.com/questions/1837754/match-multiple-cases-classes-in-scala) – nawfal

Répondre

116

Vous pouvez faire:

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

Notez que vous ne pouvez pas lier parties du motif de noms - vous ne pouvez pas le faire actuellement:

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