質問

部分的な関数を継承するクラスをいくつか設計しようとしていますが、構文を完全に正しく取得することはできないようです。私のスーパークラスは次のように見えます:

abstract class Controller {

    val react:PartialFunction[Event,Unit]

}

そして、サブクラスは次のように見えます:

class BoardRendererController(val renderer:BoardRenderer, val board:Board) extends Controller {

    override val react {
        case PieceMovedEvent(piece, origin, destination) => println("Moving now")
    }
}

しかし、これはこのエラーでコンパイルされません

[ERROR] /workspace/pacman/src/main/scala/net/ceilingfish/pacman/BoardRendererController.scala:14: error: '=' expected but '{' found.
[INFO]  override val react {
[INFO]                            ^
[ERROR] /workspace/pacman/src/main/scala/net/ceilingfish/pacman/BoardRendererController.scala:17: error: illegal start of simple expression
[INFO] }
[INFO] ^

私はこれについてたくさんのバリエーションを試しました、誰もが正しい構文が何であるかを知っていますか?

役に立ちましたか?

解決

Abhin4Vの簡潔な提案に加えて、定義でタイプの注釈を提供する必要があるため、この追加の基本クラスに追加することをお勧めします。

type PFEU = PartialFunction[Event, Unit]

その後、あなたのサブクラスは次のようになります:

class BoardRendererController(val renderer:BoardRenderer, val board:Board)
extends Controller
{
    override val react: PFEU = {
        case PieceMovedEvent(piece, origin, destination) => println("Moving now")
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top