Как реализовать частичную функцию в подклассе - PullRequest
0 голосов
/ 07 июля 2010

Я пытаюсь спроектировать пару классов, которые наследуют частичную функцию, но мне кажется, что я не могу получить правильный синтаксис.Мой суперкласс выглядит так:

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

У меня естьпробовал множество вариаций на этом, кто-нибудь знает, каков правильный синтаксис?

1 Ответ

7 голосов
/ 07 июля 2010

В дополнение к краткому предложению 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")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...