मेरे पास कुछ गणना है जो कुछ हद तक महंगा है (डेटाबेस शुरू करना), और मैं केवल डेटाबेस बनाना चाहता हूं यदि मैं वास्तव में इसका उपयोग करने जा रहा हूं। मैं एक संदर्भ चर (या केवल एक सादा परिवर्तनीय, यदि यह संभव है) की तलाश में है, तो इसका उपयोग केवल उस स्थिति में किया जाएगा जब इसका उपयोग किया जाता है (या संदर्भित)। निम्नलिखित की तरह कुछ अवधारणात्मक रूप से।क्लोजर में आलसी चर मौजूद हैं?
(def v (lazy-var (fn [] (do (println "REALLY EXPENSIVE FUNCTION") true))))
और भविष्य में, जब मैं या तो सिर्फ वर वी का उपयोग करें, या @v कहते हैं, मैं तो यह "है महंगा फंक्शन" बाहर मुद्रित करने के लिए मिलता है, और वी उस पर से सच का एक मूल्य है। यहां महत्वपूर्ण बात यह है कि एफएन का मूल्यांकन तब तक नहीं किया गया जब तक वेरिएबल (डी) संदर्भित नहीं किया गया। जब आवश्यक हो, तो फ़ंक्शन का मूल्यांकन एक बार और वैरिएबल के मान की गणना करने के लिए केवल एक बार किया जाता है। क्या यह क्लोजर में संभव है?
गीज़, मैं इसे देखने की कोशिश करते समय उस शब्द के बारे में क्यों नहीं सोचा? –