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

sgt*_*gtz 1 f#

只是试图构建一个 F# 库。到目前为止,它“似乎”是:

  • 我只能从 .fs 源文件中引用 C# 库,

  • 和 .fs 源文件不可用于 .fsx 脚本文件。

这些陈述中的任何一个是正确的吗?我读过的例子说只是使用了一个开放的,但这只适用于 .fs 文件。

有没有版本

#r "System.Drawing.dll"
Run Code Online (Sandbox Code Playgroud)

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

另外,我发现顶级模块和低级模块之间的语法差异有点奇怪。顶我很奇怪,顶级没有等号。

module Utilities

    module et =
Run Code Online (Sandbox Code Playgroud)

为什么不保持一致并为所有内容设置“module moduleName =”?

Tom*_*cek 5

请务必注意,F# 中 Visual Studio 中的“参考”仅适用于当前项目。如果您正在处理脚本文件,则它看不到项目引用的库。

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

#r @"C:\<path_to_library>\library.dll"
Run Code Online (Sandbox Code Playgroud)

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

#load "Library.fs"
Run Code Online (Sandbox Code Playgroud)

fs文件本身不能包含像指令#r,因此,如果该文件是使用一些库需要被引用,你需要有一个#r主脚本文件指令(加载源文件之前引用该库)。

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

module Foo

let bar = 10
module Sub = 
  let bar = 12
Run Code Online (Sandbox Code Playgroud)