Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 在F中自动打开命名空间#_F#_Module_Namespaces - Fatal编程技术网

F# 在F中自动打开命名空间#

F# 在F中自动打开命名空间#,f#,module,namespaces,F#,Module,Namespaces,Hi想知道如何使f#编译器自动打开名称空间 我有 namespace XXX I have to add something here do(AutoOpen("XXX.YYY")) or something like that to make the XXX.YYY module to be opened when referencing the library from external projects. [<AutoOpen>] module YYY = ..

Hi想知道如何使f#编译器自动打开名称空间

我有

namespace XXX 

I have to add something here do(AutoOpen("XXX.YYY")) or something like that to make the XXX.YYY module to be opened when referencing the library from external projects.

[<AutoOpen>]
module YYY = 
    ....
名称空间XXX
我必须在这里添加一些东西(AutoOpen(“XXX.YYY”)或类似的东西,以便在从外部项目引用库时打开XXX.YYY模块。
[]
模块YYY=
....

谢谢

自动打开属性只能应用于F#
模块
,因此您无法将其添加到整个
命名空间
。然而,由于您可以将所有的F#声明放在一个模块中,这可能就足够满足您的需要了。语法是:

[<AutoOpen>]
module MyGlobals =
  // Declarations in the module
  type Foo() = 
    member x.Bar = 10
[]
模块MyGlobals=
//模块中的声明
键入Foo()
构件x.杆=10

引用程序集时,应立即看到
Foo
。如果声明放在另一个名称空间中(即
MyLibrary
),则需要添加
openmylibrary
,但
MyGlobals
将自动访问。

要在不首先打开其父级的情况下打开名称空间/模块,必须在程序集级别添加属性。 您可以通过向项目中添加AssemblyInfo.fs文件来完成此操作:

在以下代码的情况下:

namespace Framework

module GlobalFunctions = 

  let Test () =
    10.
例如,您可以将以下代码添加到AssemblyInfo.fs:

namespace Framework

[<assembly:AutoOpen("Framework.GlobalFunctions")>]

do()
导致:

--> Referenced 'C:\PathToAssembly\Assembly.dll'
val result : float = 10.0

你为什么要这么做?自动打开模块对您来说还不够吗?不,我希望一旦我从外部项目引用了库,到XXX.YYY的路径就会自动打开,并且我可以访问模块XXX.YYY中的函数。我知道它看起来就像我在代码段中看到的一样,但我记不清了。嗨,托马斯,请参阅我之前对pad的注释。我想要的和你的建议有点不同
--> Referenced 'C:\PathToAssembly\Assembly.dll'
val result : float = 10.0