让我们说我想用宏来覆盖每个函数调用,这个宏计算我调用每个特定函数的次数。
Elixir有可能吗?
我知道有可能用
覆盖内置宏和函数import Kernel, except: [name: arity]
import MyOwnKernel
但它似乎不适用于apply / 2,也不适用于/ 3
答案 0 :(得分:4)
不是您直接问题的答案,但如果您真的想跟踪函数调用并进行一些分析,您可以考虑使用Erlang跟踪功能。我提供了一个简单的例子in this answer。
此外,您可能会查看fprof进行性能分析,这可以为您提供函数计数。 IIRC fprof
仅分析您启动它的过程,并且您无法同时运行多个配置文件。
答案 1 :(得分:4)
你做不到。这些被定义为特殊形式(Kernel.SpecialForms
),它们不能被覆盖。