在 Scala 食谱中:13.3。如何在 Actor 之间进行交流我看到了这个

class Ping(pong: ActorRef) extends Actor { // OMG - ActorRef - no type, help!
  var count = 0
  def incrementAndPrint { count += 1; println("ping") }
  def receive = {
    case StartMessage =>
      incrementAndPrint

我在自己的代码中也有一些地方有这个 ActorRef 我不喜欢它,因为我喜欢 type safety 。有没有办法在上面的 pong 示例中避免这种情况?

旁注:我知道我可以在命名中使用“actorFor”,但作为 DI 怪胎,我宁愿将它传递给构造函数/参数。

最佳答案

一些东西正在为 Akka 3.0 工作,例如看这个预告线程:https://mobile.twitter.com/RayRoestenburg/status/510511346040197120

现在有一种使用自定义询问(问号)的类型安全模式。这是一篇关于它的博客:
http://www.warski.org/blog/2013/05/typed-ask-for-akka/

不过这有点笨拙,可能不值得麻烦。

另一种方法是创建类型化 API 并将您的角色包装在其中。

10-08 17:17