我必須對Scala'match'語義或編譯器邏輯有一些基本的誤解。此代碼:scala'match'編譯規則的誤解
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個'case'語句中的「Unreachable Code」錯誤?如果不是用名稱來代替它編譯的實際值(0,Int.MaxValue,Int.MinValue),但是現在我已經使用硬編碼的值來引用它們的名稱(出於所有常見原因)。由於'val'永遠不會改變,所以第一個版本不應該起作用嗎?
btw intellij突出顯示此爲警告http://gyazo.com/147de35d25071dafa8de1290b5d23e26 – OlegYch
警告將不勝感激! Eclipse沒有提出警告。檢查編譯器的各種屬性,看看是否可以打開這種情況下的警告,但沒有發現任何東西。 – user1624503