`use`和`@ before_compile`有什么区别?

时间:2016-05-06 06:03:40

标签: metaprogramming elixir

use@before_compile之间有什么区别?两者都可用于将一些代码注入当前模块。

1 个答案:

答案 0 :(得分:3)

一个主要区别是调用a==b中的代码并在模块中调用bool operator<(const Point &other) const { return ((this->x < other.x) || ((this->x == other.x) && (this->y < other.y)); }; 后立即注入返回值,同时调用__using__并在之后注入返回值在模块编译之前,直接执行模块内的所有代码。

一个展示差异的简单程序:

use

输出:

__before_compile__

ExUnit uses @before_compile定义一个函数,该函数返回所有测试,以使ExUnit运行器可以获取并运行所有测试。