有没有办法在scala cookbook actor通信示例中避免使用无类型的ActorRef?

时间:2014-09-14 10:35:30

标签: scala akka actor

scala食谱中:13.3。如何在演员之间进行沟通我看到了这个

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 怪胎,我宁愿在构造函数/参数中传递它。

1 个答案:

答案 0 :(得分:3)

有些东西正在为Akka 3.0工作,例如,请参阅此预告片帖子:https://mobile.twitter.com/RayRoestenburg/status/510511346040197120

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

虽然这有点笨拙但可能不值得这么麻烦。

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