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