2

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

module List
  let foo = // ...

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

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

4

2 回答 2

4

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

open ThatNamespace

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

于 2010-09-17T21:48:20.423 回答
3

这以类似于扩展方法的方式工作:

module List =
    let doSomething lst v = lst |> List.nth v
于 2010-09-17T20:12:35.177 回答