

ScalaのActorのAskについていくつかサンプルコードを見て回りましたが、どれも以下のURLのように`implicit val timeout =
Timeout(5 seconds)`と暗黙の形でtimeoutを設定しています。  
Await.resultの2番めの引数などで個別に設定することはできないということなのでしょうか？

<http://alvinalexander.com/scala/scala-akka-actors-ask-examples-future-await-
timeout-result>  
<http://kimutansk.hatenablog.com/entry/20140726/1406330944>  
<https://stackoverflow.com/questions/20124072/akka-the-proper-use-of-ask-
pattern>


CC BY-SA 3.0
2016-02-15T09:51:29.290
22104
2016-03-31T07:22:57.583
2017-05-23T12:38:55.307
-1
816
question
scala
ScalaのAskではimplicit valではなく個別にtimeoutを指定する方法は無いでしょうか？


多分これだとおもうので  
<http://doc.akka.io/api/akka/2.4.2/#akka.pattern.AskableActorRef>

[code]

    def ?(message: Any)(implicit timeout: Timeout, sender: ActorRef = Actor.noSender): Future[Any]
    
[/code]

つまり

[code]

    actor.?(message)(Timeout(5 seconds))
    
[/code]

か  
actor.?(message)(Timeout(5 seconds), implicitly[ActorRef])

でいけるんじゃないでしょうか。

解説しておくとscalaは複数の引数群を持てて `def method(a:Int, b:Long)(c:Byte)` のような形になります。呼ぶときは
`method(a,b)(c)` のような記述をします。 implicit は暗黙の引数で `def method(a:Int,
b:Long)(implicit c:Byte)` のような宣言をされている場合はスコープ内やいろんなところからimplicit val
などで宣言されている Byte 型の変数を探します。`implicitly[ActorRef]`
は暗黙の引数を明示的に取り出せる関数です。（詳しくはググるか別質問で）


CC BY-SA 3.0
2016-03-31T07:22:57.583
23649
2016-03-31T07:22:57.583
3466
22104
answer