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

Ste*_*unz 7 f# module

我是F#的新手,但对C#非常熟悉.我想知道在声明顶级模块和本地模块(例如性能等)之间是否存在差异,除了顶层模块不需要命名空间声明(它是模块声明的一部分).我在文档(MSDN F#Modules)中找不到任何指定其他差异的内容.

基本上,来自C#世界我更喜欢

//Version 1
namespace My.Namespace

module MyModule = 
    let a = 1
Run Code Online (Sandbox Code Playgroud)

过度

//Version 2
module My.Namespace.MyModule
let a = 1
Run Code Online (Sandbox Code Playgroud)

鉴于在两个版本中,文件中只有一个模块,版本2是否带来任何缺点(与版本1相比)?

小智 6

那些是等价的.根据F#3.0 规格:

以模块声明开头的实现文件使用一个模块定义单个名称空间声明组.例如:

module MyCompany.MyLibrary.MyModule
    let x = 1
Run Code Online (Sandbox Code Playgroud)

相当于:

namespace MyCompany.MyLibrary
module MyModule = 
     let x = 1
Run Code Online (Sandbox Code Playgroud)