私が理解していることから、erlangで送信されるメッセージをタイプチェックする方法はありません。
次の受信ループでモジュールを開始するとします。
loop(State) ->
receive
{insert, _} ->
io:fwrite("insert\n",[]),
loop(State);
{view, _} ->
io:fwrite("view\n", []),
loop(State)
after 10000 ->
ok
end.
人々がプロセスに送信しているものを確認する方法はありません。また、そのタイプが安全かどうかを確認する方法もありません。
簡単な回避策はありますか?
私が思いついたのは、次のように呼び出されるモジュールの関数を使用することです。
send_insert(Message) ->
whereis(my_event_handler) ! {insert, Message},
ok.
このようにして、少なくとも-spec send_insert(string()) -> ok.
仕様をモジュールに追加できます。これで、少なくともエラーをモジュールに限定しました。
メッセージのタイプチェックを行うためのより標準的な方法はありますか?