我开始玩Akka,发现我的大多数演员都有一部分不可变状态和一部分可变状态。这两者都可以合并到一个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)
}
1条答案
按热度按时间q5iwbnjs1#
啊,也许我在错误的区域寻找解决方案。一个嵌套的函数实际上应该可以做到这一点!