【问题标题】:Can F# modules be monkey-patched?F# 模块可以打猴子补丁吗?
【发布时间】:2010-09-17 20:09:13
【问题描述】:

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

module List
  let foo = // ...

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

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

【问题讨论】:

    标签: f# module extension-methods monkeypatching


    【解决方案1】:

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

    open ThatNamespace
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-14
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        相关资源
        最近更新 更多