1
제가 이해하는 것은 -export()
은 모듈 정의에서 일부는 아니지만 모든 함수를 노출 할 수 있도록합니다. 그러나 모듈 정의 내에서 모든 기능을 사용할 수 있습니다.왜이 모듈에서`export`가 제대로 작동하지 않습니까?
은 내가 그것은 경우 I export_all
및 노출 모두 사라집니다 다음과 같은 오류
=ERROR REPORT==== ... ===
Error in process ... with exit value:
{undef,[{supervisor_test,supervisor,[],[]}]}
을 얻을, 내가 컴파일하고 supvervisor_test:start_listening()
를 호출 할 때마다이
-module(supervisor_test).
-export([start_listening/0, stop_listening/0, send_to_listener/1]).
listener() ->
receive
{Pid, Ref, x} ->
Pid ! {Ref, o};
{Pid, Ref, o} ->
Pid ! {Ref, x}
end.
supervisor() ->
process_flag(trap_exit, true),
Pid = spawn_link(?MODULE, listener, []),
register(reg_listener, Pid),
receive
{'EXIT', Pid, normal} -> % received when listener() finishes executing
ok;
{'EXIT', Pid, shutdown} -> % received when stop_listening() is called
ok;
{'EXIT', Pid, _} ->
supervisor()
end.
start_listening() ->
spawn(?MODULE, supervisor, []).
stop_listening() ->
Pid = whereis(reg_listener),
exit(Pid, shutdown).
send_to_listener(Value) ->
Ref = make_ref(),
reg_listener ! {self(), Ref, Value},
receive
{Ref, Reply} -> Reply
after 5000 ->
timeout
end.
과 같은 모듈이있다.
나는-module(test).
-export([f1/0]).
f1() ->
f2().
f2() ->
io:format("I am here!~n").
를 컴파일하고
test:f1()
를 호출 시도하고 그것을 잘 작동합니다.