2010-07-07 5 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]^

내가 이것에 변화의 부하를 해봤이 오류와 함께 컴파일에 실패 , 누구든지 올바른 구문이 무엇인지 알고 있습니까? abhin4v 외에도

+2

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

답변

7

는 간결한 제안, 당신은 여전히 ​​정의 유형 주석을 제공해야, 그래서 난 당신의 기본 클래스이 외에도 추천 :

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") 
    } 
} 
관련 문제