试图构建一个F#库。到目前为止它“出现”:
我只能从.fs源文件
和.fs源文件不可用于.fsx脚本文件。
这些陈述中的任何一个都是正确的吗?我读过的例子说只是使用open,但只能从.fs文件中使用。
是否有
的版本#r "System.Drawing.dll"
在同一个项目中通过f#interactive(fsi)使用的脚本文件?
另外,我发现顶级模块和较低模块之间的语法差异有点奇怪。最重要的是,顶级没有等于是奇怪的。
module Utilities
module et =
为什么不保持一致并且对所有内容都有“module moduleName =”?
答案 0 :(得分:4)
值得注意的是,F#中Visual Studio中的“引用”仅适用于当前项目。如果您正在使用脚本文件,则它不会看到项目引用的库。
要在脚本文件中引用库(例如Script.fsx
),您可以编写(您可以使用绝对路径和相对路径):
#r @"C:\<path_to_library>\library.dll"
如果您要从脚本文件加载非脚本文件(例如Library.fs
),您可以使用:
#load "Library.fs"
fs
文件本身不能包含#r
之类的指令,因此如果文件使用了某些需要引用的库,则需要在主脚本中使用#r
指令file(在加载源文件之前引用库)。
至于模块的不一致性,主要原因是当你在顶层使用module Foo
或namespace Foo
时,你不需要缩进文件的其余部分:
module Foo
let bar = 10
module Sub =
let bar = 12