Допустим, я хочу обрабатывать несколько возвращаемых значений из удаленной службы, используя один и тот же код. Я не знаю, как выразить это в 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
Обратите внимание, что я упростил пример, поэтому я не хочу сопоставлять шаблон с регулярными выражениями и т. Д. Значения соответствия на самом деле являются комплексными.
scala
pattern-matching
Франсуа Босолей
источник
источник
Ответы:
Ты можешь сделать:
code match { case "1" | "2" => // whatever case "3" => }
Обратите внимание, что вы не можете привязать части шаблона к именам - вы не можете этого сделать в настоящее время:
code match { case Left(x) | Right(x) => case null => }
источник