顶级模块和本地模块之间有什么区别吗?

时间:2013-11-21 16:36:29

标签: module f#

我是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相比)?

1 个答案:

答案 0 :(得分:6)

那些是等价的。根据F#3.0 specs

  

以模块声明开头的实现文件定义了一个   单个名称空间声明组,包含一个模块例如:

module MyCompany.MyLibrary.MyModule
    let x = 1
     

相当于:

namespace MyCompany.MyLibrary
module MyModule = 
     let x = 1