如何在Elixir中使用monkeypatch模块功能

时间:2016-03-19 13:58:00

标签: elixir

我有一个输入一些功能的Elixir模块。我想用自己的功能对其中一个功能进行monkeypatch。那可能吗?我该怎么做?

更新示例

我的具体示例是,对于任务Mix.Tasks.Deps.Compile,我想在'compile'函数中添加一些功能。

https://github.com/elixir-lang/elixir/blob/master/lib/mix/lib/mix/tasks/deps.compile.ex

Mix.Tasks.Deps.Compile模块在Mix框架中已经深深扎根。我想进行最小的更改,同时添加我想要的额外功能。我想添加的功能是cond do块的另一个条件。

1 个答案:

答案 0 :(得分:8)

简单的答案是:你不能。在BEAM上没有猴子修补的概念。

更长的答案是BEAM中的模块是延迟加载的,因此您可以用自己的实现替换模块(但是整个模块,而不仅仅是单个函数)。但我真的不确定这是正确的方法。