У меня есть актер, который может быть в нескольких состояниях. Исходное состояние должно быть передано из-за пределов:Как реализовать функцию приема за пределами действия актера и передать ее актеру
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), как реализовать функцию приема вне сферы действия актера, поэтому я могу передать ее актеру. Некоторые примеры были бы хороши! – zella
Зачем вам это нужно? Функция приема - это функция класса Actor, которую вам необходимо переопределить при расширении актера. И, кроме того, ссылка Actor, которую вы получаете, является просто прокси-сервером для основного экземпляра Actor, поэтому вы не сможете называть свои методы или поля, как у вас на вашем примере (авторизованные, связанные) как таковые. – sparkr