如何解决Erlang gen_fsm过渡到新状态
| 我有erlang gen_fsm,我的第一个状态是:begin({Nick},_From,State) ->
{reply,true,next_state,State}.
然后我有:
next_state(_Event,State) ->
io:format(\"Test \\n\"),{reply,ok,begin,State}.
但是我没看到外壳上有“ 2”字条
如何正确过渡到新状态?
解决方法
首先,请确保begin是您的FSM的实际初始状态。您可以通过在init函数中返回类似以下内容来指定FSM的初始状态:
{ok,begin,State}
开始的地方是您的初始状态。
另外,请注意,您正在定义Module:StateName/3
函数,只要在FSM上执行gen_fsm:sync_send_event
,该函数就会被调用。如果尝试使用gen_fsm:send_event
将事件发送到FSM,则应该定义一个函数Module:StateName/2
,它是它的异步版本。
最后,尝试通过跟踪模块来调试它们,而不是添加打印输出。它非常简单,并且避免了一次又一次地重新编译代码。
此处提供更多信息。
,您可以在此处找到一些示例:
http://spawnlink.com/articles/an-introduction-to-gen_fsm-erlybanks-atm/index.html
和这里:
http://pdincau.wordpress.com/2010/09/07/an-introduction-to-gen_fsm-behaviour/
希望能帮助到你
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。