【发布时间】:2011-04-08 00:54:33
【问题描述】:
我发现自己陷入了一件非常琐碎的事情:-]
我有一个枚举:
object Eny extends Enumeration {
type Eny = Value
val FOO, BAR, WOOZLE, DOOZLE = Value
}
在代码中,我必须有条件地将其转换为数字(varianr-number 对应关系因上下文而异)。我写:
val en = BAR
val num = en match {
case FOO => 4
case BAR => 5
case WOOZLE => 6
case DOOZLE => 7
}
这给了我每个分支的“无法访问的代码”编译器错误,但无论是第一个分支(在这种情况下为“case FOO => 4”)。我做错了什么?
【问题讨论】:
-
我的猜测是“en”是“val”并分配给“BAR”。以后不能重新分配,因此在声明后的任何地方都等于 BAR。
-
这是一个简化的例子,在实际程序中“en”是一个函数的输入参数。它确实不能在内部重新分配,但可能因调用而异。
-
在这种情况下,也许您可以举一个不太简单的例子?就目前而言,答案是它给出了“无法访问的代码”错误,因为存在无法访问的代码。
-
我无法复制您报告的错误。我拿了你的代码,没有改变,把它放在一个对象中并编译它。你提交给 REPL 了吗?
-
@Ivan - 发布您的实际代码!我怀疑你很快就会得到解决方案!
标签: scala pattern-matching switch-statement