2011-12-14 72 views
5

我可以在运行时找到当前函数的名称吗?Erlang - 如何在运行时找到当前函数的名称?

foo() -> 
    foo = find_function_name(). 

是否有可能写的乐趣find_function_name/0? 你会怎么做?它已经存在吗?

+5

的可能重复[?如何获得一个函数名(http://stackoverflow.com/questions/4915339/how-对获得最名称的-A-功能) – 2011-12-14 13:40:25

回答

3

更加轻便,也不会具体取决于哪个偶尔会发生变化的堆栈跟踪的格式,我宁愿使用process_info/2

​​

Function你会发现函数名作为一个原子,你会得到Module还有Arity也。你不能把它写成函数,因为它只是将当前的函数返回。 ,让你当前的函数名作为原子宏可能看起来像:

-define(current_function_name(), 
      element(2, element(2, process_info(self(), current_function)))). 

foo() -> 
    foo = ?current_function_name(). 
相关问题