【问题标题】:Opening a namespace in F#.net for a specific block of code在 F#.net 中为特定代码块打开命名空间
【发布时间】:2012-04-25 11:51:10
【问题描述】:

我知道这在 C# 中是不可能的;最近的事情是在代码文件的顶部形成一个别名。有没有办法在 F# 中做到这一点?

请参阅this question 了解我的问题的 C# 类似物:

我的猜测是“不,使用别名。”但没有冒险,没有收获。

【问题讨论】:

    标签: .net f# namespaces


    【解决方案1】:

    打开命名空间的最小范围是在模块中。

    一种解决方法是将一个函数及其打开的命名空间放入一个自动打开的子模块中,以便open 命令不会污染父模块并且子模块对用户是透明的:

    [<AutoOpen>]
    module Utils =
        open System.IO    
        // Now you do not have to include the full paths.
        let writeToFile filename (text: string) =  
          let stream = new FileStream(filename, FileMode.Create)
          let writer = new StreamWriter(stream)
          writer.WriteLine(text)
    

    【讨论】: