我目前正在學習玩阿卡和斯卡拉。Akka 2.4.6 - 問(或?)方法在哪裏?
Akka文檔說,您可以使用?
或ask
方法從演員得到一條消息。然而,在我正在使用的Akka版本(2.4.6)中的ActorRef類中沒有?
或ask
。
它移動到某個地方還是棄用了?
我目前正在學習玩阿卡和斯卡拉。Akka 2.4.6 - 問(或?)方法在哪裏?
Akka文檔說,您可以使用?
或ask
方法從演員得到一條消息。然而,在我正在使用的Akka版本(2.4.6)中的ActorRef類中沒有?
或ask
。
它移動到某個地方還是棄用了?
它移動到某個地方還是棄用了?
號?
被定義爲AskSupport
性狀內部的implicit def,是一個ActorRef
類型的隱式轉換:
object AskPattern {
implicit class Askable[T](val ref: ActorRef[T]) extends AnyVal {
def ?[U](f: ActorRef[U] ⇒ T)(implicit timeout: Timeout): Future[U] = ask(ref, timeout, f)
}
正如你可以看到,對於任何ActorRef
隱式作品,隱式類接受這種類型的一個參數。這意味着?
方法適用於任何ActorRef
通過implicit conversion。
由於@Sergey注意到的意見,以使範圍內隱,你需要import akka.pattern.ask
可能值得添加的是,爲了啓用隱式轉換,應該引入akka.pattern.ask :) – Sergey
@Sergey完成:) –
Ask.scala的鏈接是破碎。是[this](https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/pattern/AskSupport.scala#L280)你想鏈接到哪裏? –
它基於implicits,所以你需要將其導入到使用它(與pipeTo模式):'import akka.pattern.ask' – alextsc