【发布时间】:2014-07-21 12:57:40
【问题描述】:
我正在尝试基于模块上已定义的函数来定义函数。
我想做这样的事情:
defmodule A do
def my_func(pid, arg1, arg2) do
send pid, "Do Something"
end
end
在定义 my_func 之后,我想定义 my_func(arg1, arg2) 调用 my_func 传递一个 pid,例如,我将从一个 pid 池中获取。
我的第一次尝试是使用@on_definition,但没有成功。然后我尝试在模块内执行此操作:
Enum.each Module.definitions_in(__MODULE__, :def), fn {func_name, arity} ->
args = Enum.map(0..arity-1, fn i -> "arg_#{i}" end)
quoted = quote do
def unquote(func_name)(unquote_splicing(args)) do
....
但我仍然没有成功。有人对我如何得到这个有任何想法吗? :)
【问题讨论】: