Як зіставити шаблон з кількома значеннями в Scala?


85

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

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

Я знаю, що можу використовувати метод вилучення та зателефонувати, але дзвінок все одно повторюється. Якби я використовував Ruby, я писав би це так:

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

Зауважте, що я спростив приклад, отже, я не хочу збігати шаблон на регулярних виразах чи тому подібному. Значення відповідності насправді є комплексними значеннями.


можливий дублікат класів Match multiple
case

Відповіді:


149

Ви можете зробити:

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

Зверніть увагу, що ви не можете прив’язати частини шаблону до імен - наразі це зробити не можна:

code match {
  case Left(x) | Right(x) =>
  case null =>
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.