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
你爲什麼這麼想?爲什麼這會使我們的建議失效? –