फ़ाइल .erlang
शेल प्रारंभ होने से मूल्यांकन किया जाता है रिकॉर्ड के बारे में जानता है, लेकिन यह नहीं खोल के संदर्भ में मूल्यांकन किया है।इसका अर्थ यह है कि इसमें केवल सामान्य अभिव्यक्तियां हो सकती हैं जिनका मूल्यांकन किया जाता है और शेल कमांड नहीं। दुर्भाग्य से rr()
एक शेल कमांड है (यह रिकॉर्ड को पहचानने के लिए स्थानीय खोल डेटा प्रारंभ करता है) ताकि इसका उपयोग .erlang
फ़ाइल में नहीं किया जा सके।
उपयोगकर्ता परिभाषित मॉड्यूल user_default
है, जो पहले से लोड किया जाना चाहिए, फ़ाइलें जो -include
या -include_lib
का उपयोग कर रिकॉर्ड परिभाषाएँ शामिल होती हैं, कर सकते हैं, इन रिकॉर्ड परिभाषाओं उसके बाद ही user_default
में परिभाषित कार्यों के लिए उपलब्ध हो जाएगा। user_default
सामान्य संकलित मॉड्यूल है और इसमें निर्यात किए गए कार्यों को किसी अन्य कार्य के रूप में कहा जाता है ताकि रिकॉर्ड परिभाषाएं खोल के भीतर दिखाई न दें। user_default
उपयोगकर्ता को अधिक जटिल कार्यों को परिभाषित करने की अनुमति देता है जिन्हें शैल के भीतर से खोल कमांड के रूप में बुलाया जा सकता है।
संपादित करें:
मैं यहां आंशिक रूप से गलत था। जबकि मैं .erlang
के मूल्यांकन के बारे में सही था और user_default
में फ़ंक्शंस को कैसे कहा जाता है, मुझे याद किया जाता है कि कैसे user_default.erl
रिकॉर्ड परिभाषाओं के लिए खोल स्टार्टअप पर स्कैन किया गया है जो तब खोल के भीतर उपलब्ध हैं। इस बात को इंगित करने के लिए धन्यवाद @ पीटर स्ट्रिट्जिंगर।
आरआर() के उदाहरण के लिए मुझे यह काम करने में कठिनाई है। एक के लिए यदि मैंने केवल ऊपर दिए गए अनुसार लाइन को रखा है। सेरंग में यह आरआर/1 नहीं ढूंढता है और मुझे नहीं पता कि मॉड्यूल आरआर/1 को किस परिभाषित किया गया है। दूसरी तरफ मुझे यकीन नहीं है कि यह उपलब्ध होगा सभी खोल नौकरियों में। –
@ पीयर स्ट्रिट्जिंगर: 'आरआर() 'को फ़ंक्शन के रूप में परिभाषित नहीं किया गया है; आप 'local_func/7' फ़ंक्शन के खंड के रूप में इसे' stdlib/shell.erl' में पा सकते हैं। – Zed
@Zed: हाँ यह मेरी समस्या थी और मैं वैसे भी इसे ऑटो कॉल करने का एक तरीका ढूंढ रहा था। मेरे आत्म-उत्तर में कार्यवाही को निधि दें और जब मैं स्टार्टअप पर आवश्यक शेल-इन फ़ंक्शन में किसी अन्य शेल-फ़ंक्शन के बारे में नहीं सोच सकता, तो समस्या के समाधान के लिए समस्या हल हो जाती है। –