Module v. Namespaces in F #

8

Ich habe eine Bibliothek geschrieben in F #, verbraucht von C # und F #. Diese Bibliothek definiert eine Klasse foo im Modul bar im Namensraum random :

%Vor%

Wenn ich nun den Typ random.foo.bar verwende, sieht C # intellisense den Typ bar , geschachtelt im Typ random.foo .

Die Frage ist: Gibt es einen Vorteil für C #, um extern konsumierbaren Code in Module anstatt in Namespaces zu definieren? Ich verstehe, dass Module eine gute Möglichkeit sind, Funktionen zu gruppieren, aber was ist mit Klassen?

    
kolosy 20.07.2009, 19:26
quelle

1 Antwort

16

Wenn Sie F # -Komponenten zum Verbrauch aus anderen .Net-Sprachen veröffentlichen, sollten Sie Module in den öffentlichen Schnittstellen vermeiden und sich an Namespaces halten, die Klassen, Strukturen und Enums enthalten.

(Module sind eine praktische Möglichkeit, um Werte, Funktionen und Typen unter F # -only-Komponenten zu veröffentlichen oder als 'interne' Implementierungsdetails einer F # -Komponente, die .NET-Klassen veröffentlicht.)

(Siehe auch diese Frage < Eine Diskussion über die "technische Unterscheidung" zwischen Namespaces und Modulen. Diese Frage und meine Antwort oben beziehen sich mehr auf die "intentionalen Unterschiede", zB wenn Sie sich dafür entscheiden, jedes zu verwenden.)

    
Brian 20.07.2009, 19:35
quelle

Tags und Links