我是F#的新手,但我对C#非常熟悉。我想知道在声明顶级模块和本地模块(例如性能等)之间是否存在差异,除了顶层模块不需要命名空间声明(它是模块声明的一部分)。 我在文档(MSDN F# Modules)中找不到任何指定其他差异的内容。
基本上,来自C#世界我更喜欢
//Version 1
namespace My.Namespace
module MyModule =
let a = 1
在
//Version 2
module My.Namespace.MyModule
let a = 1
鉴于在两个版本中,文件中只有一个模块,版本2是否带来任何缺点(与版本1相比)?
答案 0 :(得分:6)
那些是等价的。根据F#3.0 specs:
以模块声明开头的实现文件定义了一个 单个名称空间声明组,包含一个模块例如:
module MyCompany.MyLibrary.MyModule let x = 1
相当于:
namespace MyCompany.MyLibrary module MyModule = let x = 1