Więcej lekki, a także nie w zależności od formatu StackTrace który może zmieniać od czasu do czasu, wolałbym użyć process_info/2
:
{_, {Module, Function, Arity}} = process_info(self(), current_function)
W Function
znajdziesz nazwę funkcji jako atomu i masz Module
a także Arity
. Nie można zapisać tego jako funkcji, ponieważ po prostu zwróciłby tę funkcję jako bieżącą. Makro, który daje obecną nazwę funkcji jak atom mógłby wyglądać następująco:
-define(current_function_name(),
element(2, element(2, process_info(self(), current_function)))).
foo() ->
foo = ?current_function_name().
możliwe duplikat [? Jak uzyskać nazwę funkcji] (http://stackoverflow.com/questions/4915339/how- to-get-the-name-of-a-function) –