我有一个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块的另一个条件.
简单的答案是:你做不到.在BEAM上没有猴子修补的概念.
更长的答案是BEAM中的模块是延迟加载的,因此您可以用自己的实现替换模块(但是整个模块,而不仅仅是单个函数).但我真的不确定这是正确的方法.
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |