在F#.net中打开特定代码块的命名空间

时间:2012-04-25 11:51:10

标签: .net f# namespaces

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

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

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

1 个答案:

答案 0 :(得分:5)

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

解决方法是将函数及其开放名称空间放入自动打开的子模块中,以便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)