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.


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 =>
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.