2016-11-25 83 views

回答

0

旁注:应该没有任何理由查询当前函数名。在红宝石中,我们有__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}}