条件包含在FSharp中

时间:2013-03-03 17:01:29

标签: f#

我想将一堆fs文件转换为fsx文件。

每个fs文件引用类定义在base.fs中 因此,不是在项目中编译并依赖于编译器解析,所有都将基于文件。

这意味着如果我将所有这些文件包含在base.fsx中,并且那个文件引用了另一个文件,那么base.fsx将被包含两次。

有谁知道如何使用fsx文件制作条件包含?

preprocessor documentation

  

F#中没有#define预处理器指令。你必须使用   编译器选项或项目设置,用于定义使用的符号    #if指令。

1 个答案:

答案 0 :(得分:5)

如果您要从单个fsx脚本加载所有文件,则可以按正确的顺序从项目加载单个文件,并且单个库文件无需加载base.fs直接 - 代码将被定义,因为它之前已被加载。

例如,如果您有base.fs

module Base   
let test() = 10

你有more.fs 加载base.fs但是使用那里定义的函数:

module More   
let more () =
  Base.test() + 1

然后你可以加载F#interactive中的所有文件(比方说,script.fsx),它会正常工作:

#load "base.fs"
#load "more.fs"

More.more()

唯一的缺点是在编辑more.fs时你不会获得IntelliSense(因为编辑器不知道base.fs)。要解决此问题,将文件保存在Visual Studio中的项目中可能是个好主意。但你仍然可以在F#interactive中加载它们进行实验。测试