2
我想获得可能已经创建的ActorRef
。有没有一种标准的方式可以拨打context.actorFor
,并且只有当它没有返回活动ActorRef
时,请致电context.actorOf
?反之亦然(即拨打context.actorOf
,并且只有演员已存在,请致电context.actorFor
)。有没有一个标准的方式来做'actorFor orElse actorOf`?
我想获得可能已经创建的ActorRef
。有没有一种标准的方式可以拨打context.actorFor
,并且只有当它没有返回活动ActorRef
时,请致电context.actorOf
?反之亦然(即拨打context.actorOf
,并且只有演员已存在,请致电context.actorFor
)。有没有一个标准的方式来做'actorFor orElse actorOf`?
首先: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()
可以更高效地完成您想要的任务。
or:val child = context.child(name).getOrElse(context.actorOf(Props(...),name)) –
我认为'context.child'是用于Java API的吗? – drozzy
你为什么这么想?为什么这会使我们的建议失效? –