0
我有一個演員,可以處於多個狀態。初始狀態應該從外部傳遞:如何在演員範圍之外實現接收功能並將其傳遞給演員
class MyActor(openId: String, initialState: Receive) extends Actor {
val connected: (String) => Receive = (openId: String) => {
case AuthorizedOk(user) => context.become(authorized(user))
...
case message => unhandled(message)
}
val authorized: (IUserInfo) => Receive = (user: IUserInfo) => {
case SomeLogic => context.become(...)
case message => unhandled(message)
}
def receive: Actor.Receive = initialState
}
我需要設置初始狀態connected
或構造authorized
。當然它也可能是其他功能。但我不知道如何來實現這一目標:
new MyActor("id", ???)
感謝您的回覆。我的問題是,我不明白(scala新手)如何在actor範圍外實現接收函數,所以我可以將它傳遞給actor。一些例子會很好! – zella
你爲什麼要這麼做? Receive函數是Actor類中的一個函數,在擴展Actor時需要重寫。此外,您獲得的Actor引用僅僅是底層Actor實例的代理,因此您可能無法像在自己的示例(授權,連接)上那樣調用您的方法或字段。 – sparkr