Scalaで複数の値をパターンマッチングする方法は?


85

同じコードを使用して、リモートサービスからの複数の戻り値を処理したいとします。これをScalaで表現する方法がわかりません。

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

Extractメソッドを使用してそれを呼び出すことができることはわかっていますが、呼び出しにはまだ繰り返しがあります。Rubyを使用している場合は、次のように記述します。

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

例を簡略化したので、正規表現などでパターンマッチングを行いたくないことに注意してください。一致値は実際には複素数値です。


Scala

回答:


149

できるよ:

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

パターンの一部を名前にバインドすることはできないことに注意してください。現在、これを行うことはできません。

code match {
  case Left(x) | Right(x) =>
  case null =>
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.