2013-07-17 57 views

回答

5

首先:get-or-create只有在只有一个实体存在的情况下才能工作(否则当你找到它的时候你将永远无法确定它是如何创建的)。这意味着要成为演员的父母是放置此代码的地方。

在演员这是很直接:

val child = 
    context.child(name) match { 
    case None => context.actorOf(Props(...), name) 
    case Some(c) => c 
    } 

请使用actorFor避免,它是在阿卡2.2弃用good reason。在这种情况下,context.child()可以更高效地完成您想要的任务。

+3

or:val child = context.child(name).getOrElse(context.actorOf(Props(...),name)) –

+0

我认为'context.child'是用于Java API的吗? – drozzy

+1

你为什么这么想?为什么这会使我们的建议失效? –

相关问题