これは、簡潔にするために関連性のないコードを削除した、より大きなコード本体からの抜粋です。以下のコードを単独で (新しいプロジェクトの単一のクラスとして) テストし、まったく同じ問題が続くことを確認しました。したがって、問題はここに含まれるコードに固有のものであることはわかっています。
object HumanGUI extends SimpleGUIApplication with Logs {
PropertyConfigurator.configure("log4j.properties")
def top = new MainFrame {
title = "BJ GUI"
val PlayPanel = new BoxPanel(Orientation.Vertical) {
val hitButton = new Button("Hit")
val stayButton = new Button("Stay")
val doubleButton = new Button("Double")
val quitButton = new Button("Quit")
contents += hitButton
contents += stayButton
contents += doubleButton
contents += quitButton
listenTo(hitButton, stayButton, doubleButton, quitButton)
reactions += {
case ButtonClicked(hitButton) =>
debug("Clicked Hit!")
case ButtonClicked(stayButton) =>
debug("Clicked Stay!")
case ButtonClicked(doubleButton) =>
debug("Clicked Double!")
case ButtonClicked(quitButton) =>
debug("Clicked Quit!")
}
contents = new BoxPanel(Orientation.Vertical) {
contents += playPanel
}
}
具体的には、コンパイラは、このブロックの最後の 3 つのケースに到達できないことを通知しています。
listenTo(hitButton, stayButton, doubleButton, quitButton)
reactions += {
case ButtonClicked(hitButton) =>
debug("Clicked Hit!")
case ButtonClicked(stayButton) =>
debug("Clicked Stay!")
case ButtonClicked(doubleButton) =>
debug("Clicked Double!")
case ButtonClicked(quitButton) =>
debug("Clicked Quit!")
}
なぜこれが当てはまるのでしょうか?