使用频繁导入方法导入库模块

时间:2017-11-23 18:20:44

标签: f#

假设有一组频繁的导入,我不想在每个模块中重复。有没有办法指定可以调用的“频繁导入”。例如:

module frequentImports =
    open System
    open System.IO
    ...

然后,不必单独重新键入所有导入,而是可以调用frequentImports模块。显然,上述方法对我来说不起作用,这就是问题的原因。

感谢。

1 个答案:

答案 0 :(得分:2)

无法定义类似open语句组的内容,然后只需引用该组。通常,您只需要为每个文件包含所有open语句。

你有太多你想要重复的事实可能表明你的代码组织不是最优的 - 我认为如果你通过将逻辑相关的东西放到一个文件中来构建代码,那么每个文件都需要不同的导入。

你可以做的一件事 - 虽然我不认为它很好 - 你可以定义一个模块,并为你通常需要的东西输入别名。

说,如果我想避免打开Microsoft.FSharp.ReflectionSystem.Collections.Generic,我可以为我需要的东西定义一个带别名的模块:

module MyThings = 
  type Dictionary<'k,'v> = System.Collections.Generic.Dictionary<'k, 'v>
  type FSharpType = Microsoft.FSharp.Reflection.FSharpType
  type FSharpValue = Microsoft.FSharp.Reflection.FSharpValue

现在使用open MyThings可以访问这三种类型(同样适用于模块)。也就是说,这不会自动导入所有定义,我认为这可能不值得这样做 - 但它是一种选择。