Elix中的Macro可以覆盖功能应用吗?

时间:2015-04-28 15:05:46

标签: metaprogramming elixir

让我们说我想用宏来覆盖每个函数调用,这个宏计算我调用每个特定函数的次数。
 Elixir有可能吗?

我知道有可能用

覆盖内置宏和函数
import Kernel, except: [name: arity]
import MyOwnKernel

但它似乎不适用于apply / 2,也不适用于/ 3

2 个答案:

答案 0 :(得分:4)

不是您直接问题的答案,但如果您真的想跟踪函数调用并进行一些分析,您可以考虑使用Erlang跟踪功能。我提供了一个简单的例子in this answer

此外,您可能会查看fprof进行性能分析,这可以为您提供函数计数。 IIRC fprof仅分析您启动它的过程,并且您无法同时运行多个配置文件。

答案 1 :(得分:4)

你做不到。这些被定义为特殊形式(Kernel.SpecialForms),它们不能被覆盖。