2016-08-23 3 views
0

나는 다음과 같은 클래스가 : 나는 PartialFunction[Any, Any]을 들고 val를 선언 방지하고 이런 식으로 전화를하려고 여기 PartialFunction을 다른 함수와 결합하고 PartialFunction을 반환하는 방법은 무엇입니까?

type Receive = PartialFunction[Any, Unit] 

Recieve가 정의

class MessageProcessorActor(private val destination : ActorRef) extends Actor{ 
    override def receive: Receive = { 
    case _ => 
    destination ! { 
     case MyActor.TracableMessage(msg) => MyActor.TracableMessage("Processed + " + msg) 
     case MyActor.Message(msg) => MyActor.Message("Processed + " + msg) 
     case _ => "Processed + " + _ 
    }(_) 
    } 
} 

object MyActor{ 
    case class TracableMessage(private val msg: String) extends Message(msg) 
    case class Message(private val msg: String) 
} 

. 그러나 컴파일러는이 코드를 거부합니다. 인쇄물 :

Error:(12, 6) ';' expected but '(' found. 
    }(_) 
    ^

이와 비슷한 방법이 있습니까?

답변

1

왜 그런 식으로 쓰려고합니까? 다음과 같은 문제가 있습니다.

class MessageProcessorActor(private val destination : ActorRef) extends Actor{ 
    override def receive: Receive = { 
    case MyActor.TracableMessage(msg) => { 
     destination ! MyActor.TracableMessage("Processed + " + msg) 
    } 
    case MyActor.Message(msg) => { 
     destination ! MyActor.Message("Processed + " + msg) 
    } 
    case _ => { 
     destination ! "Processed + " + _ 
    } 
    } 
} 

object MyActor{ 
    case class TracableMessage(private val msg: String) extends Message(msg) 
    case class Message(private val msg: String) 
} 
+0

예, 작동하지만 여러 개의 '대상! msg' 식. (3 번 대신) 한 번만 쓰십시오. – user3663882

+0

그러면 무엇이 이익이됩니까? –