Domanda

Sto cercando di progettare un paio di classi che ereditano una funzione parziale, ma non sembrano essere in grado di ottenere la sintassi perfettamente ragione. Il mio aspetto superclasse come questo:

abstract class Controller {

    val react:PartialFunction[Event,Unit]

}

e gli sguardi sottoclasse come:

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

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

Ma questo non riesce a compilare con questo errore

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

Ho provato carichi di variazioni su questo, nessuno sa che cosa la sintassi corretta è?

È stato utile?

Soluzione

Oltre al suggerimento laconico di abhin4v, si devono ancora fornire un tipo di annotazione nella definizione, quindi vi consiglio questa aggiunta alla classe di base:

type PFEU = PartialFunction[Event, Unit]

Poi la sottoclasse sarebbe simile a questa:

class BoardRendererController(val renderer:BoardRenderer, val board:Board)
extends Controller
{
    override val react: PFEU = {
        case PieceMovedEvent(piece, origin, destination) => println("Moving now")
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top