Quelle est la différence entre un espace de noms et un module en F#?
J'ai juste commencé à apprendre le F# (avec peu d'expérience antérieure avec .NET), donc pardonnez-moi pour ce qui est probablement une question très simple: Quelle est la différence entre un espace de noms et un module en F#?
Grâce
Dave
Edit: Merci pour la réponse, Brian. C'est ce que je voulais savoir.
Juste une précision: vous pouvez également ouvrir un espace de (similaire à C# à l'aide de l'énoncé)?
- Et encore une remarque, lorsque vous ouvrez un espace de noms en F#, comme Système, vous obtenez l'accès à tous ses sous-espaces de bien. Donc, en C#, si vous ouvrez le Système, vous devez toujours écrire "le Système de.IO.Le fichier". En F#, vous pouvez écrire "IO.Le fichier". Je trouve cela rend le code bien plus beau.
Vous devez vous connecter pour publier un commentaire.
Un espace de noms est un .Net chose, commun dans beaucoup de puissance industrielle de langues, juste une façon d'organiser les cadres et éviter les conflits de noms entre les différentes bibliothèques. À la fois vous et je peux définir un type "Foo" et de les utiliser à la fois dans un projet, à condition qu'ils soient dans des espaces de noms différents (par exemple, la protéine NS1.Foo et NS2.Foo). Les espaces de noms dans .Net contenir des types.
Un module est un F# chose, il est à peu près analogue à une "classe statique"... c'est une entité qui peut contenir laissez-lié aux valeurs et fonctions, ainsi que les types (à noter que les espaces de noms ne peut pas contenir des valeurs ou des fonctions, les espaces de noms ne peut contenir que des types, qui peuvent eux-mêmes contenir des valeurs et des fonctions). Les choses à l'intérieur d'un module peut être référencé par "nom de module.Chose", qui est la même syntaxe que pour les espaces de noms, mais des modules de F# peut aussi être "ouverte" pour permettre de qualification d'accès, par exemple
(EDIT: les espaces de noms peuvent même être ouvert, mais le fait que les modules peuvent contenir des valeurs et des fonctions de l'ouverture d'un module plus "intéressants", que vous pouvez retrouver avec les valeurs et les fonctions, par exemple, "cos", en cours de noms que vous pouvez utiliser directement, tandis que dans d'autres .Net languages vous indiquera toujours le qualifier, par exemple, des Mathématiques".cos").
Si vous saisissez un code à 'haut niveau' en F#, ce code implicitement va dans un module.
Espère que ça aide un peu, c'est une jolie question ouverte. 🙂