Как сопоставить несколько значений в Scala?

Скажем, я хочу обрабатывать несколько возвращаемых значений из удаленной службы с использованием того же кода. Я не знаю, как выразить это в Scala:

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

Я знаю, что могу использовать Extract Method и вызывать это, но в вызове все еще повторяется. Если бы я использовал Ruby, я бы написал его вот так:

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

Обратите внимание, что я упростил этот пример, поэтому я не хочу сопоставлять шаблон регулярным выражениям или некоторым таким. Значения совпадения на самом деле являются сложными значениями.

Ответ 1

Вы можете сделать:

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

Обратите внимание, что вы не можете привязывать части шаблона к именам - вы не можете сделать это в настоящее время:

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