如何让f#脚本调用模块func?

时间:2013-04-19 13:19:27

标签: f#

试图构建一个F#库。到目前为止它“出现”:

  • 我只能从.fs源文件

  • 引用C#库
  • 和.fs源文件不可用于.fsx脚本文件。

这些陈述中的任何一个都是正确的吗?我读过的例子说只是使用open,但只能从.fs文件中使用。

是否有

的版本
#r "System.Drawing.dll"

在同一个项目中通过f#interactive(fsi)使用的脚本文件?

另外,我发现顶级模块和较低模块之间的语法差异有点奇怪。最重要的是,顶级没有等于是奇怪的。

module Utilities

    module et =

为什么不保持一致并且对所有内容都有“module moduleName =”?

1 个答案:

答案 0 :(得分:4)

值得注意的是,F#中Visual Studio中的“引用”仅适用于当前项目。如果您正在使用脚本文件,则它不会看到项目引用的库。

要在脚本文件中引用库(例如Script.fsx),您可以编写(您可以使用绝对路径和相对路径):

#r @"C:\<path_to_library>\library.dll"

如果您要从脚本文件加载非脚本文件(例如Library.fs),您可以使用:

#load "Library.fs"

fs文件本身不能包含#r之类的指令,因此如果文件使用了某些需要引用的库,则需要在主脚本中使用#r指令file(在加载源文件之前引用库)。

至于模块的不一致性,主要原因是当你在顶层使用module Foonamespace Foo时,你不需要缩进文件的其余部分:

module Foo

let bar = 10
module Sub = 
  let bar = 12
相关问题