我正在使用Fysom创建FSM。 我想用另一种方式使用回调:
TABLE = {
'initial': 'OFF',
'events': [{'name': 'load', 'src': 'OFF', 'dst': 'LOADED'},],
'callbacks': {'onload': myfunction,}}
fsm = Fysom(TABLE)
在这里,如果我启动fsm.onload()
,它将执行myfunction
。相反,我想如果我启动myfunction()
,它将使用fsm.onload()
。在
我看了一下剧本,相关部分在这里:
^{pr2}$我不知道如何为我的目的改变代码的和平。在
如果不接触
myfunction
,则无法实现“反方向”回调。 回调实际上是一个反向调用(hollywood principle),因此回调的反向调用是一个简单的调用。在这意味着
myfunction
应该直接调用状态机转换。因此,状态机对象必须在myfunction
的范围内。在在这一点上,您有一些实现的可能性:
使
myfunction
成为一个闭包:在类中使用全局状态机或对其进行作用域:
创建一个在执行函数之前/之后调用状态转换方法的decorator。然后用
注意,这还需要在此范围中定义
fsm
。相关问题 更多 >
编程相关推荐