elixir - 如何在 Elixir 中猴子补丁模块功能

标签 elixir

我有一个导入一些函数的 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/

相关文章:

testing - Elixir 测试 - ExUnit - 重复数据实例

elixir - Elixir 是否有 `Kernel.delete_in` 等价物?

elixir - Phoenix/Elixir 中的远程响应流程

elixir - 使用 HTTPoison 的 HTTP 1.0 请求

constants - ?在 Elixir 中定义宏或 .hrl 文件备用以进行配置

Elixir:如何获取列表中的最后 n 个项目?

elixir - 从 Phoenix router.ex 返回响应,无需 Controller

elixir - 如何在我的 Elixir 应用程序中找到工作人员?

药剂Ecto : How to validate foreign key constraint?

Elixir 主管 - 你如何命名受监督的任务