Я начал играть с Аккой и обнаружил, что большинство моих актеров имеют частично неизменяемое состояние и частично изменяемое состояние. Оба могут быть объединены в State
класс case, который затем можно скопировать только в его изменяемое состояние и передать обратно в apply
для обновления Behavior
.
Однако было бы волшебно, если бы в этом не было необходимости. Возможно ли для частично примененной функции Scala как-то рекурсивно вызывать себя, но начиная с ее второго списка параметров? Вместо того, чтобы начинать всю цепочку с самого начала?
sealed trait Command
final case class AddA() extends Command
final case class AddB() extends Command
def apply(
immutableState1: String,
immutableState2: String,
immutableState3: String
)(
mutableState: List[String] = Nil
): Behavior[Command] = Behaviors.receiveMessage {
// without respecifying all immutable state:
case AddA() => CallIts2ndParamList("A" :: mutableState)
// what I'm trying to avoid:
case AddB() => apply(
immutableState1,
immutableState2,
immutableState3
)("B" :: mutableState)
}