我已经尝试将我的类型定义移动到另一个.fs文件,我在两个文件中都声明了相同的命名空间,但是我使用该类型的代码将无法识别该类型。 F#是否允许这样做?
答案 0 :(得分:3)
如评论所述,是的,这肯定是受支持的,但是有一个要求(不像,例如C#),定义你的类型的源文件必须在消耗它的源文件的“上方”或“之前”。
所以,如果您有2个文件:
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:
之上
正如@Lee在评论中所提到的,您可以通过点击它们并使用Alt-Up / Alt-Down重新排序VS中的文件。