【发布时间】:2015-09-30 19:07:51
【问题描述】:
我想创建一些可变的边界模块。理想情况下,结果看起来像任何其他模块,但行为可以在编译时或在配置文件中设置。我想我正在寻找类似在 erlang 中定义的东西
假设我有一个 SystemClock 模块和一个 DummyClock 元组模块。理想情况下,时钟模块是配置文件中选择的上述两个模块之一。
在config/test.ex
define(Clock, {DummyClock, 12345678})
稍后
Clock.now
# => 12345678
在config/prod.ex
define(Clock, SystemClock)
稍后
Clock.now
# => 32145687
【问题讨论】:
-
因为在 Erlang 中定义的价值非常类似于 C/C++ 中的#define。那就是它基本上是字符串替换。