2010-07-07 33 views
0

我试图设计一些继承了部分函数的类,但我似乎无法获得相当正确的语法。我父是这样的:如何在子类中实现部分函数

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

我试着对这个变化的负载编译,任何人都知道正确的语法是什么?

+2

尝试'覆盖val react = {...} – 2010-07-07 19:42:43

回答

7

除了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") 
    } 
} 
相关问题