2011-03-30 17 views
15

Bir grup birbiriyle ilişkili fonksiyona sahip olduğumu ve bunların doğal olarak dosyaya nasıl yerleştirileceğinin bağımlılıkları ile çakıştığını buldum (örneğin, işlev 1'e bağlıdır) 2. fonksiyonda, ancak fonksiyonun üstündedir 1). Kod yazarken, genellikle üst düzey ifadeleri değerlendirmeye devam ediyorum ve yalnızca tüm dosyaları refs veya niçin bağımlılıkları yenilemek için değerlendiririm. Bunu oldukça sık buluyorum, bağımlılık çatışmasıyla sonuçlanıyorum ve bir grup işlevi etrafa sarmak zorunda kalıyorum.clojure'da "kaldırma" eksikliğinden kurtulmak

Diğer dillerde bildiğim kadarıyla, bir işlevi bildirir bildirmez, sahnelerin arkasında başka bir şey göründüğü gibi "çekilir". Bu şekilde kodunuzdaki şeylerin düzeni hakkında endişelenmenize gerek yoktur ve işlevleri modüler kod bitleri olarak ele alabilir. Beni clojure içinde ısırmaya devam eden bu özellik eksikliği. Yanlış bir şey mi yapıyorum? Daha küçük bir rahatsızlık sonra büyük bir anlaşma, bu sadece dikkat çekmek için alışmak bir şey mi?

cevap

22

declare Eğer

(declare fun1 fun2 fun3) 

(defn fun3 [] (fun1)) 
(defn fun1 [] (fun2)) 
(defn fun2 [] 42) 
+0

tatlı senin ad, teşekkürler başlangıcına bir beyan deyimi ekleyerek işlev sırasını hokkabazlık önleyebilirsiniz güzel

declare macro Usage: (declare & names) defs the supplied var names with no bindings, useful for making forward declarations. Added in Clojure version 1.0 

bu sorunu çözer! tam olarak ne arıyordum –

+0

Hala biraz brüt, ama teşekkürler! –