2009-07-20 25 views
8

C# ve F # tarafından tüketilen F # ile yazılmış bir kitaplığım var. Bu kütüphane ad random yılında, modül bar yılında, bir sınıf foo tanımlar:Modüller v. Ad boşlukları F #

#light 
namespace random 

module bar 

type foo() = ... 

Şimdi, tip random.foo.bar tüketmek giderken, C# intellisense tip random.foo iç içe tip bar, olarak görüyor.

Sorun şudur: C# için ad-dışsal kodları ad alanlarından ziyade modüllere tanımlamak için bir avantaj var mı? Bu modüllerin fonksiyonlarını gruplamak için iyi bir yol olduğunu anlıyorum, ama derslerden ne haber? Diğer # Net dillerinden tüketim için F # bileşenleri yayınlıyorsanız, genel arabirimlerde modüllerden kaçınmalı ve sınıflar, yapılar ve enumlar içeren ad alanlarına yapışmalısınız.

+0

Olası dupe, http: // stackoverflow .com/questions/795172/what-the-a-namespace-and-a-module-in-f- – harms

+1

tür, ama ben non-f # interop için en iyi uygulamaları arıyordum. dedi ki, biri diğerinin bir sonucu. – kolosy

cevap

16

(ayrıca bkz musunuz (Modüller veya .Net sınıfları yayınlayan bir F # bileşeninin 'iç' uygulama detayları gibi. F # -sadece bileşenleri arasındaki değerler, işlevleri ve türleri yayınlamak için ya kullanışlı bir yoludur) this question İsim alanları ve modüller arasındaki 'teknik ayrım' ile ilgili bir tartışma için Bu soru ve yukarıdaki cevabım 'kasıtlı farklılıklar' hakkında daha fazladır, örneğin her birini kullanmak istediğinizde.)