Как реализовать частичную функцию в подклассе
-
02-10-2019 - |
Вопрос
Я пытаюсь разработать пару классов, которые наследуют частичную функцию, но я не могу получить синтаксис вполне правильно. Мой суперкласс выглядит так:
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] ^
Я пробовал множество вариаций на это, кто-нибудь знает, какой правильный синтаксис?
Решение
В дополнение к краткому предложению 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")
}
}
Не связан с StackOverflow