2010-07-07 9 views
0

J'essaye de concevoir deux classes qui héritent d'une fonction partielle, mais je ne semble pas pouvoir obtenir la syntaxe correcte. Mon superclasse ressemble à ceci:Comment implémenter une fonction partielle dans une sous-classe

abstract class Controller { 

    val react:PartialFunction[Event,Unit] 

} 

Et la sous-classe ressemble à:

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

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

Mais cela ne peut pas compiler avec cette erreur

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

J'ai essayé des tas de variations sur ce , quelqu'un sait ce que la syntaxe correcte est?

+2

Essayer 'override val react = {...}' –

Répondre

7

En plus de abhin4v est la suggestion laconique, vous avez encore à fournir une annotation de type dans la définition, donc je recommande cet ajout à votre classe de base:

type PFEU = PartialFunction[Event, Unit] 

Ensuite, votre sous-classe ressemblerait à ceci:

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