1

私の最初の状態であるerlanggen_fsmがあります:

begin({Nick}, _From, State) ->
            {reply, true, next_state, State}.

で、〜がある:

next_state(_Event, _From, State) -> 
        io:format("Test \n"),
        {reply, ok, begin, State}.

Testしかし、私はシェルでメモを見ていません

新しい状態にどれだけ正しく移行しますか?

4

2 に答える 2

4

まず、beginがFSMの実際の初期状態であることを確認します。FSM の初期状態を指定するには、init関数で次のようなものを返します。

{ok, begin, State}

begin初期状態です。

また、 FSM でModule:StateName/3a が実行されるたびに呼び出される関数を定義していることにも注意してください。gen_fsm:sync_send_eventを使用して FSM にイベントを送信しようとしている場合は、代わりにその非同期バージョンでgen_fsm:send_eventある function を定義する必要があります。Module:StateName/2

最後に、出力を追加するのではなく、モジュールをトレースしてデバッグしてみてください。はるかに簡単で、何度もコードを再コンパイルする必要がありません。

詳細については、こちらをご覧ください

于 2011-05-24T09:15:15.417 に答える
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/

それが役に立てば幸い

于 2011-05-24T09:16:09.787 に答える