एक ही प्रतीक पर कई बार उपयोग करने की आवश्यकता होती है?


11

क्या requireआदर्शहीन है? यानी करते हैं

(require 'helm)

तथा

(require 'helm)
(require 'helm)

उसी परिणाम के साथ अंत?

जवाबों:


14

हाँ। से नामांकित विशेषताएं (जोर मेरा):

एक सुविधा नाम एक प्रतीक है जो फ़ंक्शन, चर आदि के संग्रह के लिए खड़ा है। उन्हें परिभाषित करने वाली फ़ाइल को सुविधा प्रदान करनी चाहिए। एक अन्य कार्यक्रम जो उनका उपयोग करता है, वे यह सुनिश्चित कर सकते हैं कि उन्हें सुविधा की आवश्यकता के द्वारा परिभाषित किया गया है। यदि यह पहले से लोड नहीं किया गया है तो यह परिभाषाओं की फ़ाइल को लोड करता है।

एक सुविधा की उपस्थिति की आवश्यकता के लिए, requireसुविधा नाम के साथ तर्क के रूप में कॉल करें । requireवैश्विक वैरिएबल में featuresयह देखने के लिए कि क्या वांछित सुविधा पहले से ही प्रदान की गई है। यदि नहीं, तो यह उपयुक्त फ़ाइल से सुविधा को लोड करता है । इस फ़ाइल को provideफीचर को जोड़ने केfeatures लिए शीर्ष स्तर पर कॉल करना चाहिए ; यदि यह ऐसा करने में विफल रहता है, तो requireएक त्रुटि का संकेत देता है


डॉक्स उद्धृत करने के लिए स्वीकृत।
PythonNut

कृपया गिल्स के उत्तर की जानकारी को यहाँ शामिल करें। या, @ गिल्स, इस जवाब को आप में डालकर भी काम करेंगे।
daveloyall

13

हां, बशर्ते कि कोड उस नियम का सम्मान करता हो helm.elया helm.elcकहता हो जिसे उसे कॉल करना होगा (provide 'helm)। कॉल (provide 'helm)प्रतीक helmको एक लोड की गई विशेषता के रूप में चिह्नित करता है , और इसके कारण दूसरा कॉल (require 'helm)कुछ भी नहीं करता है।

यदि लोड किया गया पैकेज कॉल नहीं करता है, provideतो requireएक त्रुटि का संकेत देता है, और सुविधा को लोड के रूप में चिह्नित नहीं किया जाता है, इसलिए दूसरी कॉल (require 'helm)लोड करने का प्रयास करेगी (और आमतौर पर उसी कारण से फिर से विफल हो जाती है)।


अतिरिक्त जानकारी के लिए +1 धन्यवाद। इसने डॉक्स पढ़ने के बाद मेरी उलझन को हल कर दिया।
PythonNut
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.