有没有相同的方法来检索函数的名称,就像__MODULE__在Elixir/Erlang中检索模块的名称一样?
例:
defmodule Demo do
def home_menu do
module_name = __MODULE__
func_name = :home_menu
# is there a __FUNCTION__
end
End
Run Code Online (Sandbox Code Playgroud)
EDITED
选定的答案有效,
但使用apply/3调用返回的函数名会产生此错误:
[error] %UndefinedFunctionError{arity: 4, exports: nil, function: :public_home, module: Demo, reason: nil}
Run Code Online (Sandbox Code Playgroud)
我有一个功能:
defp public_home(u, m, msg, reset) do
end
Run Code Online (Sandbox Code Playgroud)
有问题的功能将严格在其模块中调用.
有没有办法在自己的模块中按名称动态调用私有函数?
Ale*_*kin 14
? defmodule M, do: def m, do: __ENV__.function
? M.m
#? {:m, 0}
Run Code Online (Sandbox Code Playgroud)
从本质上讲,__ENV__结构包含您可能需要的一切.
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |