Erlang gen_fsm过渡到一个新状态

时间:2011-05-24 08:05:41

标签: erlang fsm

我有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注释

如何正确转换到新状态?

2 个答案:

答案 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)