2011-03-30 11 views
15

मुझे कुछ बार मिला है कि मेरे पास अंतर-संबंधित कार्यों का एक समूह है, और मैं उन्हें स्वाभाविक रूप से फ़ाइल में कैसे रखूंगा, उनकी निर्भरताओं के साथ विवाद समाप्त हो जाता है (यानी फ़ंक्शन 1 निर्भर करता है फ़ंक्शन 2 पर, लेकिन फ़ंक्शन से ऊपर है 1)। जब मैं कोड लिख रहा हूं, तो मैं आमतौर पर शीर्ष स्तरीय अभिव्यक्तियों का मूल्यांकन करता रहता हूं, और केवल रेफ या व्हाट्नॉट पर निर्भरताओं को रीफ्रेश करने के लिए पूरी फ़ाइल का मूल्यांकन करूंगा। मुझे अक्सर यह पता चल रहा है कि मैं एक निर्भरता संघर्ष के साथ समाप्त होता हूं, और अंत में कार्यों के एक समूह को जोड़ना चाहता हूं।क्लोजर में "hoisting" की कमी के आसपास हो रही है

अन्य भाषाओं में मुझे पता है, जैसे ही आप एक समारोह घोषित करते हैं, यह दृश्यों के पीछे "फिसल जाता है" जैसे कि यह किसी और चीज से पहले दिखाई देता है। इस तरह आपको अपने कोड में चीजों के क्रम के बारे में चिंता करने की ज़रूरत नहीं है, और कोड के मॉड्यूलर बिट्स के रूप में कार्यों का इलाज कर सकते हैं। यह इस सुविधा की कमी है जो मुझे क्लोजर में काट रही है। क्या मुझसे कुछ गलत हो रही है? यह एक मामूली परेशानियों के बाद एक बड़ा सौदा है, क्या यह कुछ ऐसा है जो आप ध्यान देने के लिए उपयोग करते हैं?

उत्तर

22

declare इस समस्या को अच्छी तरह से

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

आप अपने नाम स्थान

(declare fun1 fun2 fun3) 

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

मिठाई, धन्यवाद के शुरू करने के लिए एक घोषणा बयान जोड़कर समारोह आदेश से खेल से बच सकते हैं हल करती है! ठीक है जो मैं –

+0

के लिए देख रहा था अभी भी थोड़ा सकल, लेकिन धन्यवाद! –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^