【发布时间】:2013-12-30 05:07:51
【问题描述】:
我希望能够跟踪在某个状态机中完成的任务数(使用 Akka FSM),这就像加入 N 个动作,开始于从状态 A 到 B 的转换,在状态 B。所以当所有事件都达到 FSM 时状态 B - 进入状态 C。
我为 fork/join 状态创建了非常简单的跟踪器。
sealed trait ForkJoin {
def join(): ForkJoin
}
case class Forks(forkNum: Int) extends ForkJoin {
private var finished: Int = 0
override def join = if (finished + 1 == forkNum) JoinComplete
else {
val f = Forks(forkNum)
f.finished = finished + 1
f
}
}
case object JoinComplete extends ForkJoin {
override def join = JoinComplete
}
我不喜欢那里 - var finished 的感觉。它的本质是 val,但是我不知道如何制作私有 val 并在 join 方法中对其进行初始化。
我认为有一些方法可以将构造函数参数设置为 private,不能从外部访问 - 但这不起作用。
【问题讨论】:
标签: scala case-class