我一定对 Scala 的“匹配”语义或编译器逻辑有一些基本的误解。这段代码:
val stageStart:Int = 0
val stageShutDown:Int = Int.MaxValue
val stageErrorReport:Int = Int.MinValue
def stageString(stage:Int):String = stage match {
case stageStart => "Start"
case stageShutDown => "End"
case stageErrorReport => "Error"
case _ => "Step " + String.valueOf(stage)
}
在最后 3 个“案例”语句中导致“无法访问代码”错误?如果您用实际值(0、Int.MaxValue、Int.MinValue)代替名称,它会编译——但现在我已经硬编码了应该由它们的名称引用的值(出于所有通常的原因)。既然“val”永远不会改变,那么第一个版本不应该也可以吗?