2010-07-07 1 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

попробуйте 'override val react = {...}' –

ответ

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") 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^