我是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 规格:
以模块声明开头的实现文件使用一个模块定义单个名称空间声明组.例如:
Run Code Online (Sandbox Code Playgroud)module MyCompany.MyLibrary.MyModule let x = 1相当于:
Run Code Online (Sandbox Code Playgroud)namespace MyCompany.MyLibrary module MyModule = let x = 1