【发布时间】:2014-05-20 20:16:20
【问题描述】:
在Erlang有没有办法引用当前正在执行的函数)?
这对于产生无限循环很有用:
spawn(fun() -> do_something, this_fun() end)
在 JavaScript 中 arguments.callee 就是这样做的,请参阅 MDC 上的规范。
编辑回答“你为什么要这样做”:主要是好奇心;在原型设计时定义一个计时器也很有用:
Self = self(),
spawn(fun() -> Self ! wake_up, receive after 1000 -> nil end, this_fun() end),
%% ...
【问题讨论】:
-
你为什么需要那个?
-
这个问题也有回答:stackoverflow.com/questions/867418/…
-
“Funs with Names”:erlang.org/eeps/eep-0037.html,于 2012 年底并入 Erlang。
标签: erlang