f# - 可以对 F# 模块进行猴子修补吗?

标签 f# module extension-methods monkeypatching

快速提问。我刚刚读到,如果你想添加一个功能,例如List 模块,您可以使用该函数定义一个新的 List 模块:

module List
  let foo = // ...

这是否具有将 foo 添加到主 List 模块的效果,或者您是否必须显式打开新的 List?前者看起来像是 Ruby 的“猴子补丁”;我猜后者更像是扩展方法。

(我会尝试这个,但我不在编译器附近。)

最佳答案

它很像命名空间;他们是“开放的”。也就是说,我可能有两个文件或两个程序集将类型贡献到命名空间中,然后如果我使用这些文件或引用这些程序集并说

open ThatNamespace

我看到了所有成员的联合。

关于f# - 可以对 F# 模块进行猴子修补吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3738650/

相关文章:

interop - 动态导入 C/C++ DLL

f# - 如何最好地捕获失踪的let!、do!、return和return!在 F# 的计算表达式中

c# - VB 2008 程序集中的扩展方法不能在 C# 项目中使用?

c# - Where() 在抽象层返回新的 self

f# - 生成参数化的 F# 引用

f# - 换行符和格式化程序

java - junit 5 编译为模块

perl - 如何在加载的模块中使用 Smart::Comments 而不更改其源?

javascript - 在 node.js 中用一个模块替换另一个模块

对象的 C# 扩展方法