我希望能夠跟蹤某些狀態機(使用Akka FSM)完成的任務的數量,就像在狀態B中從狀態A到狀態B轉換時啓動N個操作一樣。所以當所有的均衡器在狀態B達到FSM時 - 它將進入狀態C.我創建了非常簡單的叉/加入狀態跟蹤器。斯卡拉案例類和私人構造函數元素
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
}
我不喜歡有什麼 - 變種pewsense完成。由於它的本質,它是val,但是我不知道如何使私有val並初始化它在加入方法。
我認爲有一些方法可以使構造函數的參數爲私人,不能從外部訪問 - 但這是行不通的。
但是這將允許我創建一個具有任意值的Forks實例來「完成」,這是我想要避免的。 – jdevelop
我相應地改變了答案,這是否合適? – tmbo