Wie werden mehrere Werte in Scala gemustert?

85

Angenommen, ich möchte mehrere Rückgabewerte von einem Remotedienst mit demselben Code verarbeiten. Ich weiß nicht, wie ich das in Scala ausdrücken soll:

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

Ich weiß, dass ich die Extraktionsmethode verwenden und das aufrufen kann, aber der Aufruf wiederholt sich immer noch. Wenn ich Ruby verwenden würde, würde ich es so schreiben:

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

Beachten Sie, dass ich das Beispiel vereinfacht habe und daher keine Musterübereinstimmung für reguläre Ausdrücke oder ähnliches vornehmen möchte. Die Übereinstimmungswerte sind tatsächlich komplexe Werte.

François Beausoleil
quelle
mögliches Duplikat von Match mehrere Fälle Klassen in Scala
Nawfal

Antworten:

149

Du kannst tun:

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

Beachten Sie, dass Sie Teile des Musters nicht an Namen binden können - dies ist derzeit nicht möglich:

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