假设我在这里有这段代码:
do_recv_loop(State) ->
receive
{do,Stuff} ->
case Stuff of
one_thing ->
do_one_thing(),
do_recv_loop(State);
another_thing ->
do_another_thing(),
do_recv_loop(State);
_ ->
im_dead_now
end
{die} -> im_dead_now;
_ -> do_recv_loop(State)
end.
现在,理论上这是尾递归的,因为对 do_recv_loop 的三个调用都不需要返回任何内容。但是 erlang 会认识到这是尾递归并进行适当优化吗?我担心嵌套结构可能会使其无法识别。