Frage

Ich versuche, ein paar Klassen zu entwerfen, die eine Teilfunktion erben, aber ich scheine nicht in der Lage sein, die Syntax ganz richtig zu machen. Mein Super sieht wie folgt aus:

abstract class Controller {

    val react:PartialFunction[Event,Unit]

}

Und die Unterklasse sieht aus wie:

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

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

Aber nicht mit diesem Fehler

kompilieren
[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] ^

Ich habe viele Variationen dieser versucht, jemand wissen, was die richtige Syntax ist?

War es hilfreich?

Lösung

Neben abhin4v des lapidaren Vorschlag, Sie immer noch eine Typanmerkung in der Definition liefern müssen, so dass ich diese Ergänzung zu Ihrer Basisklasse empfehlen:

type PFEU = PartialFunction[Event, Unit]

Dann Unterklasse würde wie folgt aussehen:

class BoardRendererController(val renderer:BoardRenderer, val board:Board)
extends Controller
{
    override val react: PFEU = {
        case PieceMovedEvent(piece, origin, destination) => println("Moving now")
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top