我有一个导入一些函数的 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 block 的另一个条件。
最佳答案
简单的答案是:你不能。 BEAM 上没有猴子修补的概念。
更长的答案是 BEAM 中的模块是延迟加载的,因此您可以将模块替换为您自己的实现(但整个模块,而不仅仅是单个函数)。但我真的不确定这是正确的方法。
关于elixir - 如何在 Elixir 中猴子补丁模块功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36102643/