可以用 Elixir 中的宏覆盖函数应用程序吗?
Can function application be overriden with Macro in Elixir?
假设我想用一个宏来覆盖每个函数调用,该宏计算我调用每个特定函数的次数。
在 Elixir 中有可能吗?
我知道可以用
覆盖内置宏和函数
import Kernel, except: [name: arity]
import MyOwnKernel
但它似乎对 apply/2 和 apply/3
都不起作用
不是你直接问题的答案,但如果你真的想跟踪函数调用并做一些分析,你可以考虑 Erlang 跟踪功能。我提供了一个简单的例子 in this answer.
此外,您可以查看 fprof 进行分析,这可以为您提供函数计数。 IIRC fprof
仅分析启动它的过程,不能同时 运行 多个配置文件。
你不能。这些被定义为特殊形式 (Kernel.SpecialForms
),它们不能被覆盖。
假设我想用一个宏来覆盖每个函数调用,该宏计算我调用每个特定函数的次数。
在 Elixir 中有可能吗?
我知道可以用
覆盖内置宏和函数import Kernel, except: [name: arity]
import MyOwnKernel
但它似乎对 apply/2 和 apply/3
都不起作用不是你直接问题的答案,但如果你真的想跟踪函数调用并做一些分析,你可以考虑 Erlang 跟踪功能。我提供了一个简单的例子 in this answer.
此外,您可以查看 fprof 进行分析,这可以为您提供函数计数。 IIRC fprof
仅分析启动它的过程,不能同时 运行 多个配置文件。
你不能。这些被定义为特殊形式 (Kernel.SpecialForms
),它们不能被覆盖。