हां, आप byte-defop-compiler
वास्तव में एक फ़ंक्शन को निर्दिष्ट करने के लिए उपयोग कर सकते हैं जो आपके फ़ंक्शन को संकलित करता है, byte-defop-compiler
कुछ ने यह सुनिश्चित करने में मदद करने के लिए कि आपके फ़ंक्शन को कई आर्ग के आधार पर चेतावनियों का उत्पादन करना चाहिए , में निर्मित किया है।
प्रलेखन
FUNCTION.If फ़ंक्शन के लिए एक कंपाइलर-फ़ॉर्म जोड़ें, जो एक प्रतीक है, फिर चर "बाइट-सिम्बोल" का उपयोग करने के लिए ओपकोड को नाम देना होगा। यदि फ़ंक्शन एक सूची है, तो पहला तत्व फ़ंक्शन है और दूसरा तत्व बाइटकोड-प्रतीक है। दूसरा तत्व शून्य हो सकता है, जिसका अर्थ है कि कोई ओपकोड नहीं है। Compile-HANDLER इस बाइट-ऑप को संकलित करने के लिए उपयोग करने वाला फ़ंक्शन है, या संक्षिप्त रूप 0, 1, 2, 3, 0-1, या 1-2 हो सकता है। यदि यह शून्य है, तो हैंडलर "बाइट-कंपाइल-सिम्बोल" है।
प्रयोग
अपने विशिष्ट मामले में आप यह परिभाषित करने के लिए किसी एक संक्षिप्ताक्षर का उपयोग कर सकते हैं कि आपके फ़ंक्शन को दो आर्ग दिए जाने चाहिए।
(byte-defop-compiler my-caller 2)
अब आप कार्य कर रहे हैं चेतावनियाँ जब कुछ के साथ संकलित किया जाएगा, लेकिन 2 args।
यदि आप अधिक विशिष्ट चेतावनियाँ देना चाहते हैं और अपने स्वयं के संकलक कार्य लिखना चाहते हैं। पर देखो byte-compile-one-arg
और संदर्भ के लिए bytecomp.el में अन्य इसी तरह के कार्य करता है।
ध्यान दें कि आप सत्यापन को संभालने के लिए केवल कुछ फ़ंक्शन को निर्दिष्ट नहीं कर रहे हैं, लेकिन वास्तव में संकलन भी। Bytecomp.el में फिर से संकलन कार्य आपको एक अच्छा संदर्भ प्रदान करेगा।
सुरक्षित मार्गों
यह कुछ ऐसा नहीं है जिसे मैंने ऑनलाइन देखा या चर्चा की है, लेकिन कुल मिलाकर मैं यह कहूंगा कि इसे लेने के लिए एक मार्ग की सलाह दी जाती है। सही मार्ग (IMO) वर्णनात्मक हस्ताक्षरों के साथ आपके दोषों को लिखना होगा या एक मैक्रो का उपयोग करना होगा जो विस्तार के समय पर चेतावनी प्रदान करेगा, आपके आर्गों की लंबाई की जांच करेगा और त्रुटियों का उपयोग करेगा byte-compile-warn
या error
दिखाएगा। eval-when-compile
त्रुटि जाँच करने के लिए इसका उपयोग करने से आपको लाभ हो सकता है ।
आपके फ़ंक्शन को कभी भी उपयोग किए जाने से पहले आपको परिभाषित करने byte-defop-compiler
की आवश्यकता होगी , और कंपाइलर को आपके फ़ंक्शन की वास्तविक कॉल करने से पहले कॉल करने की आवश्यकता होगी।
फिर, लगता है कि वास्तव में दस्तावेज नहीं है या जो मैंने देखा है (गलत हो सकता है) से सलाह दी गई है, लेकिन मुझे लगता है कि यहां अनुसरण करने के लिए पैटर्न आपके पैकेज के लिए किसी प्रकार की हेडर फ़ाइल को निर्दिष्ट करने के लिए होगा जो खाली डिफंस के एक गुच्छा से भरा है। और को कॉल करता है byte-defop-compiler
। यह मूल रूप से एक पैकेज होगा जो आपके असली पैकेज को संकलित करने से पहले आवश्यक है।
राय: मैं जो जानता हूं, उसके आधार पर, जो कि बहुत अधिक नहीं है, क्योंकि मैंने सिर्फ इस सब के बारे में सीखा है, मैं आपको सलाह दूंगा कि आप कभी भी ऐसा न करें। कभी