2016-08-12 12 views
6

में बनाम आयात बनाम आवश्यकता बनाम आवश्यकता का विस्तार करें चिकन में (use) और (import) के बीच अंतरों पर थोड़ा सा आलसी हूं। इसी प्रकार, (load), (require) और (require-extension) कैसे भिन्न होते हैं?चिकन योजना

इन चीजों को वेबसाइट पर बहुत अधिक उल्लेख नहीं किया जा रहा है।

उत्तर

5

Load और require पूरी तरह से रन-टाइम, प्रक्रियात्मक क्रियाएं हैं। Load एक स्ट्रिंग तर्क स्वीकार करता है और चल रही योजना में उस नाम के साथ फ़ाइल लोड करता है (जो स्रोत या संकलित कोड हो सकता है), ताकि जो कुछ भी परिभाषित हो, वह उपलब्ध हो जाए। Require वही काम करता है, लेकिन यह जांचता है कि फ़ाइल को पहले ही लोड किया जा चुका है या नहीं, अगर एक ही नाम पर प्रदान किया गया है (आमतौर पर लोड की गई फ़ाइल द्वारा)। वे योजना प्रोग्रामिंग में अपेक्षाकृत दुर्लभ हैं, अन्य भाषाओं में प्लग-इन के अनुरूप, जहां संकलन समय पर अज्ञात कोड लोड होने की आवश्यकता है। अधिक जानकारी के लिए इकाई eval के लिए मैनुअल पेज देखें।

Import फ़ाइलों के बजाय मॉड्यूल से संबंधित है। यह नामित मॉड्यूल की तलाश में है, जो पहले ही लोड हो चुका है, और वर्तमान संदर्भ में दिखाई देने वाले मॉड्यूल से निर्यात किए गए नामों को बनाता है। एक मॉड्यूल सफलतापूर्वक आयात करने के लिए, इसके लिए एक आयात पुस्तकालय होना चाहिए। यह वाक्यविन्यास है, इसलिए मॉड्यूल का नाम कॉल में स्पष्ट रूप से दिखाई देना चाहिए और रन टाइम पर गणना नहीं की जा सकती है। अधिक जानकारी के लिए मॉड्यूल पर मैनुअल पेज देखें।

Require-library कोड लोड करने के लिए सही चीज करता है। यदि कोड पहले से ही चल रही योजना का हिस्सा है, या तो क्योंकि यह चिकन में बनाया गया है, यह कुछ भी नहीं करता है। अन्यथा यह एक कोर लाइब्रेरी इकाई लोड करेगा यदि कोई है, या अंतिम उपाय के रूप में require पर कॉल करेगा। संकलन समय पर, यह सुनिश्चित करने के लिए समान चीजें करता है कि पर्यावरण रनवे पर सही होगा। अधिक जानकारी के लिए मैनुअल में "गैर-मानक मैक्रोज़ और विशेष रूप" पृष्ठ देखें।

Userequire-library एक ही नाम पर import करता है। यह आपके चिकन कार्यक्रम में कार्यक्षमता जोड़ने का सबसे आम तरीका है। हालांकि, हम (import scheme) और (import chicken) लिखते हैं क्योंकि इन मॉड्यूल की कार्यक्षमता पहले ही लोड हो चुकी है। Require-extension SRFI 55 संगतता के लिए प्रदान की गई use के लिए एक सटीक समानार्थी है। आर 7 आरएस मोड में, importuse के लिए समानार्थी भी है।

+0

बहुत बढ़िया, धन्यवाद। –

+1

यह भी चिकन 5 के साथ सरलीकृत किया जाएगा: 'उपयोग',' आवश्यकता-विस्तार 'और' आयात 'सभी मूल रूप से वही व्यवहार करते हैं। आखिरकार हम इनमें से एक या दो से छुटकारा पायेंगे। – sjamaan