据我了解,无法对以 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.
规范添加到模块中。现在至少我已将错误限制在我的模块中。
是否有更标准的方式对消息进行类型检查?