我有erlang gen_fsm,我的第一个州:
begin({Nick}, _From, State) ->
{reply, true, next_state, State}.
然后我有:
next_state(_Event, _From, State) ->
io:format("Test \n"),
{reply, ok, begin, State}.
但是我没有在shell中看到Test
注释
如何正确转换到新状态?
答案 0 :(得分:4)
首先,确保开始是您的FSM的实际初始状态。您可以在 init 函数中返回以下内容来指定FSM的初始状态:
{ok, begin, State}
开始是你的初始状态。
另请注意,您正在定义Module:StateName/3
函数,只要在您的FSM上执行gen_fsm:sync_send_event
,就会调用该函数。如果您尝试使用gen_fsm:send_event
向FSM发送事件,则应该定义一个函数Module:StateName/2
,这是它的异步版本。
最后,尝试通过tracing调试模块,而不是添加打印输出。它更简单,它可以避免您一次又一次地重新编译代码。
更多信息可供使用here。
答案 1 :(得分:2)