我指的是after-4
2> c(counter).
{ok,counter}
3> counter:start().
** exception error: undefined function timer:apply_after/4
in function counter:start/0 (counter.erl, line 40)
-module(counter).
-compile(export_all).
counter(State) ->
receive
{From, {add, Number}} ->
NewNumber = State+Number,
From ! {self(), NewNumber},
counter(NewNumber);
{From, {resolve}} ->
From ! {self(), State},
counter(0);
terminate ->
ok
end.
add(Pid, Number) ->
timer:apply_after(1000, ?MODULE, fun add/2, [Pid, 10]),
Pid ! {self(), {add, Number}},
receive
{Pid, Msg} -> Msg
after 3000 ->
timeout
end.
resolve(Pid) ->
Pid ! {self(), {resolve}},
receive
{Pid, Msg} -> Msg
after 3000 ->
timeout
end.
handle_info(resolve) ->
resolve(self()),
erlang:send_after(3000, self(), resolve).
start() ->
Pid = spawn(?MODULE, counter, [0]),
timer:apply_after(1000, ?MODULE, fun add/2, [Pid, 10]),
Pid.为什么计时器模块没有正确加载?
发布于 2016-12-05 07:22:05
docs显式地声明函数应该是一个原子。你这是在传递乐趣。将“趣味添加/2”更改为简单的“添加”,并确保add/2已导出。
https://stackoverflow.com/questions/40967488
复制相似问题