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", ???)
お返事ありがとうございます。私の問題は、私は理解していない(スカラーには新しい)アクタースコープの外で関数を受け取るように実装する方法は、私はそれを俳優に渡すことができます。いくつかの例がいいでしょう! – zella
なぜあなたはそれをしたいですか? Receive関数は、Actorを拡張するときにオーバーライドする必要があるActorクラスの関数です。さらに、あなたが取得するActorリファレンスは、基本のActorインスタンスへのプロキシに過ぎないので、あなたのメソッドやフィールドをあなたの例(許可された、接続されている)のように呼び出すことはできません。 – sparkr