Pregunta

Estoy tratando de diseñar un par de clases que heredan una función parcial, pero no parecen ser capaces de obtener la sintaxis del todo bien. Mis superclase es similar al siguiente:

abstract class Controller {

    val react:PartialFunction[Event,Unit]

}

Y las miradas de subclase como:

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

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

Pero esto falla al compilar con este error

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

He intentado un montón de variaciones sobre esto, alguien sabe cuál es la sintaxis correcta es?

¿Fue útil?

Solución

Además de la sugerencia concisa de abhin4v, todavía se tiene que suministrar una anotación de tipo en la definición, por lo que recomiendo esta adición a su clase base:

type PFEU = PartialFunction[Event, Unit]

A continuación, la subclase se vería así:

class BoardRendererController(val renderer:BoardRenderer, val board:Board)
extends Controller
{
    override val react: PFEU = {
        case PieceMovedEvent(piece, origin, destination) => println("Moving now")
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top