Что плохого в том, как я использую akka unbecome
Есть класс scala (из курса Coursera reactive)
class Counter extends Actor {
def counter(n: Int): Receive = {
case "inc" => context.become(counter(n + 1))
case "get" => sender ! n
}
def receive = counter(0)
}
Все, что делает этот актер, - это увеличивает счетчик по запросу inc и возвращает текущее значение счетчика через запрос get. Я думал, что это контекст.become добавляет новое поведение в стек поведения. Поэтому, если я добавлю строку
case "dec" => context.unbecome()
Он восстановит предыдущее поведение из стека и в дальнейшем get-запрос вернет Предыдущее значение. Но если я побегу
counter ! "inc"
counter ! "inc"
counter ! "inc"
counter ! "inc"
counter ! "dec"
counter ! "get"
Возвращаемый результат равен 0, но не 3, Как я ожидал. Мог ли кто-нибудь опишите, почему?