考虑到开始于空闲状态的FSM演员
startWith(Idle, IdleData)
我想监控过渡到这个第一状态(从没有一个国家?)
我试过了
onTransition {
case _ -> Idle => // Wasn't called
}
据相关FSM文档:
另外,也可以通过一个函数对象接受两种状态onTransition,在情况下,你过渡处理逻辑被作为一种方法实现的:
onTransition(handler _)
def handler(from: StateType, to: StateType) {
// handle it here ...
}
鉴于从类型StateType而不是选项[StateType]我认为这是不可能的,但也许我失去了一些东西。
我正在寻找最近类似的东西。
如果我没有理解你的问题,这是当你从初始状态开始你的FSM监控的一种方式:
class ExampleFSM extends Actor with FSM[State, Data] {
// A FSM begins its existence in Idle state and can move to different states
startWith(Idle, NoData)
when(Idle) {
case Event(SetData(something), NoData) =>
goto(SomeOtherState) using Data(something)
}
onTransition {
case Idle -> Idle =>
stateData match {
case _ =>
println("Initial transition")
}
}
}
在上面的例子中,当我们实例化FSM传递的消息SetData(something)
,它开始在状态Idle
还有就是可以监看Idle -> Idle
的过渡。
在当我们开始,我们可以看到一个输出Initial transition
打印的FSM上述情况下,你可以利用这个做更多复杂的东西,按您的需求
所以基本上,如果你更新从case _ => Idle
现有的过渡到case Idle -> Idle
它应该工作
注意:有可能做到这一点的方法不止一种,我也还在探索,所以我的答案是仅仅有得到这个的一种可能方式阿卡FSM的力量。