मैंने क्लोजर core.clj
स्रोत कोड में कुछ फ़ंक्शन पर ^:static
मेटाडेटा देखा है, उदा। seq?
की परिभाषा में:क्लोजर में "^: स्थिर" क्या करता है?
(def
^{:arglists '([x])
:doc "Return true if x implements ISeq"
:added "1.0"
:static true}
seq? (fn ^:static seq? [x] (instance? clojure.lang.ISeq x)))
क्या ठीक इस मेटाडाटा क्या करता है, और क्यों यह यह core.clj
भर तो अक्सर इस्तेमाल किया?
जब आप * पूरी तरह से स्वचालित * कह रहे हैं, तो क्या आपका मतलब है कि क्लोजर कंपाइलर के हाल के संस्करणों में जुड़वां पैदा होते हैं और प्रत्येक फ़ंक्शन के लिए ऐसे अनुकूलन * निष्पादित करते हैं * कोई फर्क नहीं पड़ता^स्थिर या नहीं? –
जब एनोटेशन टाइप करते हैं तो संकलक यह निर्धारित करने का कारण बनता है कि कोई फ़ंक्शन ऑब्जेक्ट के अलावा कुछ अन्य उत्पादित कर सकता है, तो अन्य रूप जेनरेट किए जाएंगे। –