可以用 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),它们不能被覆盖。