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

8
我是一个F#新手,但我对C#非常熟悉。我想知道声明顶层模块和局部模块(例如性能等)之间是否有区别,除了顶层模块不需要命名空间声明(它是模块声明的一部分)之外。我在文档中找不到指定其他区别的内容(MSDN F# Modules)。
基本上,从C#世界来看,我更喜欢:
//Version 1
namespace My.Namespace

module MyModule = 
    let a = 1

over

//Version 2
module My.Namespace.MyModule
let a = 1

考虑到两个版本文件中都只有一个模块,那么版本2相对于版本1有什么缺点吗?


当您在同一文件中有多个模块时,您只需要第一个版本。 - Gustavo Guerra
1个回答

8

这两者是等效的。根据F# 3.0 规范

An implementation file that begins with a module declaration defines a single namespace declaration group with one module. For example:

module MyCompany.MyLibrary.MyModule
    let x = 1

is equivalent to:

namespace MyCompany.MyLibrary
module MyModule = 
     let x = 1

1
非常感谢,这就是我在寻找的答案! - Stephan Kunz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接