Как сопоставить несколько значений в 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 =>
}