F#是否允许在不同的文件中定义类?

F#是否允许在不同的文件中定义类?,f#,F#,我尝试将类型定义移动到另一个.fs文件,在两个文件中声明了相同的命名空间,但使用该类型的代码无法识别该类型。F#允许吗?如评论所述,这是肯定支持的,但有一个要求(与C#不同),即定义类型的源文件必须在使用它的源文件的“之上”或“之前” 因此,如果您有两个文件: File1.fs namespace Type.Test type Person = { Name : string; Age : int } File2.fs namespace Type.Test module Consum

我尝试将类型定义移动到另一个.fs文件,在两个文件中声明了相同的命名空间,但使用该类型的代码无法识别该类型。F#允许吗?

如评论所述,这是肯定支持的,但有一个要求(与C#不同),即定义类型的源文件必须在使用它的源文件的“之上”或“之前”

因此,如果您有两个文件:

File1.fs

namespace Type.Test    
type Person = { Name : string; Age : int }
File2.fs

namespace Type.Test
module ConsumeType = 
    let richDude : Person = { Name = "Bill"; Age = 58 }
然后,在命令行上调用编译器时,需要先传递File1.fs,然后再传递File2.fs:

c:\> fsc.exe -a File1.fs File2.fs
如果您在Visual Studio(或其他IDE)中进行编译,则需要将File1.fs置于File2.fs之上:

c:\> fsc.exe -a File1.fs File2.fs


正如@Lee在评论中提到的,您可以通过单击文件并使用Alt Up/Alt Down在VS中重新排序文件。

Yes,但F#按顺序处理源文件,因此您必须确保引用类的文件出现在包含定义的文件之后。您的意思是,类定义文件应按字母顺序命名,以便出现在使用它的文件之前?它不是按字母顺序排列的,如果您使用的是VS,则可以使用Alt up/down在列表中上下移动文件。