17
A
回答
30
二郎19.0+
使用宏?FUNCTION_NAME
來得到當前函數的名稱作爲一個原子,並?FUNCTION_ARITY
獲得元數爲整數。
實施例:
main()->
myFunction().
myFunction()->
io:write("I am ~p !",[?FUNCTION_NAME]).
這EEP-0045實施。
舊版本的二郎神
在舊版本的二郎神,有沒有簡單的方法來獲得當前的函數名在編譯時。但是,您可以在運行時檢索:
{current_function, {M, F, A}} = process_info(self(), current_function)
哪裏A
是元數(參數個數),而不是實際的參數。 process_info/2
的第一個參數是一個進程ID,它可以是當前進程(self()
)或其他進程。例如:
1> process_info(self(), current_function).
{current_function,{erl_eval,do_apply,5}}
不過請注意,雖然這將是功能上等同於?FUNCTION_NAME
宏,它更慢,因爲它在運行系統中進行評估。
5
在運行時,您可以引發異常並檢查堆棧跟蹤的頂部。
foo() ->
catch throw(away),
[{Module, Fun, Arity} | _] = erlang:get_stacktrace(),
io:format("I am ~p:~p/~p!~n",[Module, Fun, Arity]).
相關問題
- 1. 獲取類名稱函數的名稱
- 2. 獲取函數名稱
- 3. LuaBind獲取函數名稱
- 4. 如何獲取調用當前函數的函數名稱?
- 5. 如何獲取JavaScript函數中的函數名稱?
- 6. R獲取函數參數的名稱
- 7. 獲取裝飾函數的名稱?
- 8. 獲取函數的名稱空間
- 9. JavaScript - 獲取調用函數的名稱
- 10. 獲取當前VBA函數的名稱
- 11. jQuery +獲取函數的名稱
- 12. 獲取注入CFC的函數名稱?
- 13. 如何在PHP中獲取函數的參數名稱?
- 14. 如何獲取JavaScript函數中缺少參數的名稱?
- 15. 如何從CloudFormation AWS :: Lambda :: Alias獲取函數名稱和別名?
- 16. django:getattr函數(獲取字段名稱)
- 17. 按名稱獲取函數描述符:
- 18. 動態獲取函數名稱
- 19. 從DLL獲取函數名稱
- 20. 在javascript中獲取函數名稱
- 21. 在Swift中獲取函數名稱
- 22. 從自己獲取函數名稱
- 23. 如何在powershell函數中獲取參數名稱
- 24. 如何使用Scala宏獲取構造函數參數名稱
- 25. 如何在Python中獲取函數參數名稱文字
- 26. 如何在共享庫中獲取正確的函數名稱?
- 27. 如何獲取函數的名稱作爲字符串?
- 28. 如何在Go中獲取函數的名稱?
- 29. 如何在JavaScript中獲取調用函數的名稱?
- 30. 如何獲取綁定到委託的函數名稱
`?FUNCTION_NAME`和`?FUNCTION_ARITY`宏現在存在:http://erlang.org/doc/reference_manual/macros.html#id85926 – Stratus3D 2017-11-14 14:25:03