2011-12-14 6 views
5

実行時に現在使用している関数の名前を見つけることはできますか?Erlang - 実行時に現在の関数の名前を見つける方法

foo() -> 
    foo = find_function_name(). 

find_function_name/0を書くことは可能ですか? どうやったらいいですか?すでに存在していますか? Function

​​

あなたが原子のような関数名を見つけることができます、あなたはModuleを得る:より​​軽量とも時折変更することができますスタックトレースのフォーマットに依存しない

+5

の可能な複製を(http://stackoverflow.com/questions/4915339/how-機能の名前を取得する) –

答えて

3

、私はむしろprocess_info/2使用したいですArityもあります。この関数を現在のものとして返すだけなので、これを関数として書くことはできません。原子のようなあなたの現在の関数名を与えるマクロは次のようになります。[?関数の名前を取得する方法]

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

foo() -> 
    foo = ?current_function_name(). 
関連する問題