2017-03-06 3 views
1

오래전에 보낸 사람 ActorRef와 함께 작동하는 방법이 코드보다 배웠다 context.sender() 값을 변경하십시오는 akka

질문 1 : 비 미래 기능에 대한 진실은 있습니까? 또는 첫 번째 변형과 같이 작성하는 것이 안전할까요?

질문 2 : 이렇게 작성하는 방법이 있습니까?

def receive = { 
    case x: Foo => sendrer() {s => doSome(s, x)} 
} 
+0

"가 아닌 미래의 기능에 대한 진실은 무엇입니까?" 미래를 돌려주는 배우 내부에 기능이 있습니까? – britter

답변

2

sender()의 결과는 주어진 메시지에 대한 수신 동작이 실행되는 한 동일하게 유지됩니다.

그래서 첫 번째 질문에 대답 : 예는 한 최초의 변형처럼 그것을 할 저장입니다 같이

    당신의 배우 내부 필드에 sender()에 의해 반환 된 값을 할당하지
  1. 그 값을 배우 외부의 어딘가에 전달하십시오

그러나 sender()의 결과를 변수에 지정하는 것은 좋지 않습니다. 오히려보다, 내가 sender()를 호출하고 직접 메시지를 보내 게 좋을 것 (이 두 질문에 내 대답은 것) : 당신이 의미하는 무엇을

def receive = { 
    case x: Foo => doSome(x) 
} 

def doSome(msg: Foo) = { 
    // your logic here 
    sender() ! msg 
}