开发者

How to implement a partial function in a subclass

I'm trying to design a couple of classes that inherit a partial function, but I don't seem to be able to get the syntax quite r开发者_如何学Goight. My superclass looks like this:

abstract class Controller {

    val react:PartialFunction[Event,Unit]

}

And the subclass looks like:

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

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

But this fails to compile with this 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] ^

I've tried loads of variations on this, anyone know what the correct syntax is?


In addition to abhin4v's terse suggestion, you still have to supply a type annotation in the definition, so I recommend this addition to your base class:

type PFEU = PartialFunction[Event, Unit]

Then your subclass would look like this:

class BoardRendererController(val renderer:BoardRenderer, val board:Board)
extends Controller
{
    override val react: PFEU = {
        case PieceMovedEvent(piece, origin, destination) => println("Moving now")
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜