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

时间:2010-09-17 20:09:14

标签: f# module extension-methods monkeypatching

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

module List
  let foo = // ...

这是否会将foo添加到主List模块,或者您是否必须明确打开新的List?前者似乎是Ruby的“猴子补丁”;我猜后者更像是扩展方法。

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

2 个答案:

答案 0 :(得分:4)

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

open ThatNamespace

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

答案 1 :(得分:3)

这种方式与扩展方法类似:

module List =
    let doSomething lst v = lst |> List.nth v