Comment mettre en œuvre une fonction partielle dans une sous-classe
-
02-10-2019 - |
Question
Je suis en train de concevoir deux classes qui héritent d'une fonction partielle, mais je ne semble pas être en mesure d'obtenir la syntaxe tout à fait raison. Mon superclasse ressemble à ceci:
abstract class Controller {
val react:PartialFunction[Event,Unit]
}
Et les regards de sous-classe comme:
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 point, quelqu'un sait ce que la syntaxe correcte est?
La solution
En plus de la suggestion laconique abhin4v, 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")
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow