2011-12-14 56 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(). 
相關問題