我目前正在学习与Akka和Scala一起玩。
Akka文档说您可以使用?
或ask
方法从演员那里收到消息。但是在我使用的Akka版本(2.4.6)中,ActorRef类中没有?
或ask
。
是移动到某处还是弃用了?
答案 0 :(得分:4)
是移动到某处还是弃用了?
没有。 ?
在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
,因为隐式类接受所述类型的一个参数。这意味着?
方法适用于通过implicit conversion的任何ActorRef
。
正如@Sergey在评论中指出的那样,为了实现隐含的范围,您需要import akka.pattern.ask