【发布时间】:2016-03-19 13:58:00
【问题描述】:
我有一个 Elixir 模块,它可以导入一些函数。我想用我自己的猴子补丁其中一个功能。那可能吗?我该怎么做?
示例更新
我的具体示例是任务 Mix.Tasks.Deps.Compile,我想在“编译”函数中添加一些功能。
https://github.com/elixir-lang/elixir/blob/master/lib/mix/lib/mix/tasks/deps.compile.ex
Mix.Tasks.Deps.Compile 模块在 Mix 框架中根深蒂固。我想做最小的改变,同时添加我想要的额外功能。我要添加的功能是 cond do 块的另一个条件。
【问题讨论】:
-
这引出了一个问题——你为什么要这样做?有什么具体的例子吗?在 BEAM 上可能有更简洁的方法。
-
@cdegroot,请看添加的例子
-
请在问题中发布任何示例,而不是链接到它们
-
对于这种特殊情况,推荐的操作方式似乎是在您自己的模块中扩展您的功能(当然,您可以疯狂地使用元编程来拼接单个条件 ;-) ) 然后使用 Mix 的别名系统将“编译”别名为您的编译。请参阅elixir-lang.org/docs/stable/mix/Mix.html,“别名”标题。
标签: elixir