Могу ли я использовать switch-case для сопоставления с образцом в перечислениях?
Я старался
import scala.annotation.switch
object Foo extends Enumeration {
val First = Value
val Second = Value
val Third = Value
}
object Main {
def foo(x: Foo.Value) = (x: @switch) match {
case Foo.First => 1
case Foo.Second => 2
case Foo.Third => 3
}
}
но получите следующее предупреждение (Scala 2.11.4):
warning: could not emit switch for @switch annotated match
def foo(x: Foo.Value) = (x: @switch) match {
Затем я попытался вместо этого определить перечисление в Java, поскольку enum
в Java отличаются от Enumeration
в Scala. Все равно не повезло.
Это @switch
сопоставление с образцом доступно только для примитивных типов?