'de veri yapısı uygulama detaylarından soyutlama Birden fazla alt yapıları ile Clojure karmaşık bir veri yapısı geliştiriyorum.Clojure
Bu yapıyı zaman içinde genişletmek istediğimi biliyorum ve zaman zaman veri yapısının farklı kullanıcılarını kırmadan iç yapıyı değiştirmek isteyebilir (örneğin, bir hastayı bir hasaşta değiştirmek istiyorum). bazı performans nedenleriyle indeksleme yapısının tür veya birleştirmek bir Java tipi)
Benim şu anki düşünce geçerli:
- bir mini kütüphane oluşturma çeşitli erişimci yöntemleri ile genel yapısı için bir protokol tanımlayın veri yapısında gezinen işlevler e .g. Ben endişeliyim olsa (sorgu-altyapı-abc Param1 param2)
- , mini-kütüphane
Ben bu işe yarayacak kullanmak tanımlanan protokol yöntemlerle defrecord veya deftype kullanarak veri yapısını, uygulamak oldukça "tutkal" kodu gibi görünmeye başlıyor. Ayrıca muhtemelen nesneye yönelik yaklaşımlarla daha fazla yakınlığımı da yansıtıyor.
Clojure'da bunu yapmanın önerilen yolu nedir?
Teşekkürler Michal! Her zamanki gibi anlayışlı :-) kesinlikle ILookup ve Associative seçeneklerine bakacaktır – mikera
Bu çok faydalı bir cevap! Ancak yaklaşık üç yıl sonra, şu anda 1.5 sürümündeki özelliği temel alarak bunu güncellemek (veya yeni bir cevap oluşturmak) harika olacaktır. Fark ettiğim bir şey şu ki, 'defrecord' artık diğer fonksiyonların bu cevabı nasıl etkileyeceğinden emin değil, fabrika fonksiyonlarını yayar. –
Bu cevabın ayrıca bir güncelleme de kullanabileceğini düşünüyorum - O'Reily Clojure kitabı şimdi bile clojure's defrecord'ın fabrika fonksiyonları yarattığını söylüyor. – djhaskin987