如何做以下事情:
rec = fn ->
receive do
after
1000 -> __function__
end
end
rec.()
函数指向当前函数,类似于Ruby中的方法将符号返回给当前方法。
答案 0 :(得分:0)
Sidenote :查询当前函数名称应该没有任何理由。在Ruby中我们有__callee__
,这对于区分别名很方便,除非在2.3中被破坏,但__method__
本身没有多大意义。
无论如何,可以使用:erlang.process_info/2
:
{:current_function, {module, function, arity}} = \
:erlang.process_info(:erlang.self(), :current_function)
示例:
defmodule A, do: def a, do: :erlang.process_info(:erlang.self(), :current_function)
A.a
#⇒ {:current_function, {A, :a, 0}}