如何在运行时找到当前函数的名称

  • 本文关键字:函数 运行时 function erlang
  • 更新时间 :
  • 英文 :


我能在运行时找到当前函数的名称吗?

foo() ->
  foo = find_function_name().

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

更轻量,也不依赖于偶尔会改变的堆栈跟踪格式,我宁愿使用process_info/2:

{_, {Module, Function, Arity}} = process_info(self(), current_function)

Function中,你会发现函数名是一个原子,你也会得到ModuleArity。你不能把它写成函数因为它只会返回当前的函数。将当前函数名作为atom提供给您的宏可能如下所示:

-define(current_function_name(), 
            element(2, element(2, process_info(self(), current_function)))).
foo() ->
    foo = ?current_function_name().

相关内容

  • 没有找到相关文章

最新更新