2013-11-21 10 views
7

Ich bin ein Neuling zu F #, bin aber mit C# ziemlich vertraut. Und ich frage mich, ob es einen Unterschied zwischen der Deklaration von Top-Level-Modulen und lokalen Modulen (z. B. Performance usw.) gibt, abgesehen davon, dass die Namespace-Deklaration nicht für Top-Level-Module benötigt wird (sie ist Teil der Moduldeklaration). Ich kann nichts in der Dokumentation (MSDN F# Modules) finden, die andere Unterschiede angibt.Gibt es einen Unterschied zwischen Top-Level-Modulen und lokalen Modulen?

Grundsätzlich von der C# Welt kommen ziehe ich

//Version 1 
namespace My.Namespace 

module MyModule = 
    let a = 1 

über

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

Da es in beiden Versionen nur ein Modul in der Datei sein wird, hat 2 Version keine Nachteile mit sich bringen (verglichen mit Version 1)?

+0

Sie nur die erste Version benötigen, wenn Sie mehrere Module in der gleichen Datei –

Antwort

6

Das sind gleichwertig. Laut F # 3.0 specs:

Eine Implementierung-Datei, die mit einer Modul Deklaration beginnt definiert eine einzigen Namespace-Deklaration Gruppe mit einem Modul. Zum Beispiel:

module MyCompany.MyLibrary.MyModule 
    let x = 1 

entspricht:

namespace MyCompany.MyLibrary 
module MyModule = 
    let x = 1 
+1

Vielen Dank haben, dass die Antwort war ich suchte ! –

Verwandte Themen