我理解这在C#中是不可能的;最接近的是在代码文件的顶部形成一个别名。有没有办法在F#中做到这一点?
请参阅this question了解我的问题的C#类似物:
我的猜测是“不,请使用别名。”但没有冒险,没有任何收获。
答案 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)