快速提问。我刚刚读到,如果你想添加一个功能,例如List 模块,您可以使用该函数定义一个新的 List 模块:
module List
let foo = // ...
这是否具有将 foo
添加到主 List 模块的效果,或者您是否必须显式打开新的 List
?前者看起来像是 Ruby 的“猴子补丁”;我猜后者更像是扩展方法。
(我会尝试这个,但我不在编译器附近。)
最佳答案
它很像命名空间;他们是“开放的”。也就是说,我可能有两个文件或两个程序集将类型贡献到命名空间中,然后如果我使用这些文件或引用这些程序集并说
open ThatNamespace
我看到了所有成员的联合。
关于f# - 可以对 F# 模块进行猴子修补吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3738650/