web-dev-qa-db-ja.com

Scalaで複数の値をパターン一致させる方法は?

同じコードを使用して、リモートサービスからの複数の戻り値を処理するとします。これを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

この例は単純化されているため、正規表現などのパターンマッチングはしたくないことに注意してください。一致値は実際には複雑な値です。

80

できるよ:

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

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

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