2013-07-17 81 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

你爲什麼這麼想?爲什麼這會使我們的建議失效? –

相關問題