【问题标题】:Getting Akka actor self-reference difference获取 Akka 演员自我参考差异
【发布时间】:2016-01-21 23:14:17
【问题描述】:

我使用 Akka 框架和 Java API,所以我尝试理解框架的源代码 - 我不能,因为它是用 Scala 编写的,不幸的是我不知道这种语言。 那么,用self()和getSelf()方法让ActorRef指向自己有什么区别呢?

更新: 那么 context() 和 getContext() 呢?我注意到它们在 Actor 中返回不同类型的对象,从 UntypedActor 扩展而来。

【问题讨论】:

    标签: akka


    【解决方案1】:

    self() 是惯用的 Scala API,getSelf() 是惯用的 Java API。它们返回相同的值,但 getSelf() 只能从 UntypedActor 的子类访问,UntypedActor 是从 Java 扩展以实现 actor 的类。

    【讨论】:

    • 我想更新问题的答案与“......只能从 UntypedActor 的子类访问,这是从 Java 扩展以实现演员的类。”?
    • 这是实际代码: ``` def getContext(): UntypedActorContext = context.asInstanceOf[UntypedActorContext] ``` 换句话说,上下文在下面是完全一样的实现,只是增加了一些Java 便利接口。
    • 顺便说一句,在 Akka 中为同一个 API 提供 Acala 和 Java 版本是很常见的。通常在 javadocs 中有标记说 JAVA API 和 SCALA API,但在旧代码中,这些似乎在一些地方丢失了。
    • 我应该学习 Scala 核心,它对我来说变得非常有趣。
    【解决方案2】:

    没有区别:它们指向相同的最终值。

    【讨论】:

    • 谢谢,希望我能有时间学习Scala,这样我就可以理解像Akka这样的库的源代码了。
    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多