在斯卡拉食谱: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我不喜欢它,因为我喜欢类型安全.在上面的乒乓球例子中有没有办法避免这种情况?
旁注:据我所知,我可以使用“actorFor”进行命名,但作为DI怪胎,我宁愿在构造函数/参数中传递它.
解决方法
一些东西正在为Akka 3.0工作,例如,请参阅此预告片:
https://mobile.twitter.com/RayRoestenburg/status/510511346040197120
现在使用自定义问题(问号)存在类型安全模式.这是一个关于它的博客:
http://www.warski.org/blog/2013/05/typed-ask-for-akka/
虽然这有点笨重但可能不值得麻烦.
另一种方法是创建类型化API并将actor包装在其中.