5

これが私のコードです:

class testActor extends Actor   {
    var test = "test2"
    def receive = {
            case "test" ⇒ 
                    test="works"
                    "works"

    }
}


 def test = Action {
    var test = "test"
    val system = ActorSystem("MySystem")
    val myActor = system.actorOf(Props[testActor.testActor], name = "testActor")

    myActor ! "test"

    test = myActor.test

Ok(views.html.test(test))
}

行: test = myActor.test は機能しません。

アクター関数によって返されるもの (この場合は "動作") にアクセスする方法、またはアクター内の変数にアクセスする方法が必要です。

4

1 に答える 1

9

結果を送信者に返すには、メッセージを送信者に送り返します。

def receive = {
  case "test" => sender ! "works"
}

応答を待つには、Await.result()呼び出しを使用します。

  implicit val timeout = Timeout(Duration(1, TimeUnit.SECONDS))
  test = Await.result(myActor ? "test", Duration(1, TimeUnit.SECONDS))
于 2012-07-13T20:53:01.283 に答える