2013-11-21 119 views
7

我是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 
+1

非常感謝,這是我一直在尋找的答案! –

相關問題