Альтернативы использованию «вар» для государства с актерами?

Я часто использую переменные с актерами Акки, чтобы поддерживать состояние. Например, если мне нужно, чтобы мой актер вел список предметов, я мог бы сделать что-то вроде:

class ListActor extends Actor{
  var xs : List[Int] = List()

  def receive = {
    case x : Int => xs = x :: xs
  }
}

Использование изменяемой переменной противоречит духу Scala. В качестве альтернативы я использовал это:

class ListActor2 extends Actor{
  import context._

  def collect_ints(accu : List[Int]) : Receive = {
    case x : Int => become(collect_ints(x :: accu))
  }

  def receive = collect_ints(Nil)
}

Мне нравится, как это выглядит больше, но нужно ли беспокоиться о переполнении стека?

Я знаком с чертой FSM и использовал ее и раньше, но для некоторых ситуаций это кажется слишком большим.

Каков рекомендуемый способ поддержания простого состояния? Есть ли другие альтернативы, о которых я не знаю?

Кроме того, это вообще плохой признак, если мне часто нужны изменяемые переменные? Я не использую модель актера должным образом?

Ответы на вопрос(3)

Ваш ответ на вопрос