Come creare una corrispondenza di più valori in Scala?


85

Diciamo che voglio gestire più valori restituiti da un servizio remoto utilizzando lo stesso codice. Non so come esprimerlo in Scala:

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

So di poter usare Extract Method e chiamarlo, ma c'è ancora ripetizione nella chiamata. Se stessi usando Ruby, lo scriverei così:

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

Nota che ho semplificato l'esempio, quindi non voglio creare corrispondenze su espressioni regolari o qualcosa di simile. I valori di corrispondenza sono in realtà valori complessi.


possibile duplicato delle classi Match multiple case in scala
nawfal

Risposte:


150

Tu puoi fare:

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

Nota che non puoi associare parti del pattern ai nomi - non puoi farlo attualmente:

code match {
  case Left(x) | Right(x) =>
  case null =>
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.