我可以使用开关盒进行枚举模式匹配吗?
我试过了
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定义枚举,因为Java的enum
与Scala的不同Enumeration
。仍然没有运气。
它@switch
的模式匹配仅适用于基本类型?
为了完成Regis的回答,Joshua Suereth在深度Scala中指出,要使Scala应用表开关优化,必须满足以下条件:
尽管Foo对象不是表开关优化的主题,但它不符合上述任何条件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句