scala - Akka 2.4.6 - ask(或?)方法在哪里?

标签 scala playframework akka

我目前正在使用 Akka 和 Scala 学习 Play。

Akka 文档说你可以通过使用 ? 从 Actor 那里得到一条消息。或 ask方法。然而没有 ?ask在我使用的 Akka 版本的 ActorRef 类中(2.4.6)。

它是否已移至某处或已弃用?

最佳答案

Was it moved somewhere or deprecated?



?定义为 implicit defAskSupport 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/

相关文章:

scala - Spark : explode multiple columns into one

java - Hibernate 过滤器关联

scala - 为什么 ScheduleOnce 每次在应用程序关闭时都会运行?

scala - Spark 中的 XGBoost 模型 --> 缺失值处理

class - Scala:从子类引用伴随对象

windows - 玩框架看不到JRE

java - Play Http.Context 实现

java - JUnit 在 play 框架 2.0.4 中测试 Akka 参与者 - scala.concurrent.duration.Duration 上的 JAVA ClassNotFoundException

scala - 组合 future - 如何获得与 future 列表结果相关联的另一个变量

java - 如何在 Akka Java 中使用 Patterns.askWithReplyTo