我目前正在使用 Akka 和 Scala 学习 Play。
Akka 文档说你可以通过使用 ?
从 Actor 那里得到一条消息。或 ask
方法。然而没有 ?
或 ask
在我使用的 Akka 版本的 ActorRef 类中(2.4.6)。
它是否已移至某处或已弃用?
最佳答案
Was it moved somewhere or deprecated?
号
?
定义为 implicit def内AskSupport
trait 并且是 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
关于scala - Akka 2.4.6 - ask(或?)方法在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501378/