2015-12-22 15 views
5

के बीच अंतर को समझना मुझे लाइब्रेरी या मॉड्यूल आयात करने के तीन तरीकों के बीच अंतर नहीं समझा जाता है। मैं वर्तमान में यह समझ के रूप में,'लोड`,' आवश्यकता ', और `requ_relative`

load 'file.rb' 

वर्तमान फ़ाइल में बाहरी फ़ाइल की सामग्री आयात होगा जबकि:

require 'file.rb' 

ही कार्यक्षमता का प्रदर्शन करेंगे, लेकिन पहले से आयात किया गया था एक फ़ाइल आयात नहीं होता ।

require_relative 'file.rb' 

require के समान है, लेकिन जबकि require फ़ाइल खोजने के प्रयास में खोज पथ $: का उपयोग करेगा यह एक फाइल है कि केवल वर्तमान निर्देशिका में लोड होगा। मुझे कोई संदेह नहीं है कि तीन तंत्रों की मेरी समझ त्रुटिपूर्ण है। क्या कोई कुछ स्पष्टीकरण दे सकता है?

+0

यह बहुत अधिक है। requ_relative वर्तमान फ़ाइल स्थानों के सापेक्ष है। लोड हमेशा लोड, केवल पहली बार की आवश्यकता है। – Mircea

+2

आप इसे भी इस माध्यम से जाना पसंद कर सकते हैं: - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Abhi

उत्तर

8

load का उपयोग तब किया जाता है जब आप कोई फ़ाइल आयात करना चाहते हैं चाहे वह पहले ही आयात हो चुका है या नहीं। require या require_relative का उपयोग तब किया जाता है जब आप केवल एक फ़ाइल आयात करना चाहते हैं यदि यह पहले से नहीं है।

इससे, यह इस प्रकार है कि पूर्व का उपयोग तब किया जाता है जब आयातित फ़ाइल विश्लेषण (डेटा फ़ाइल) की वस्तु होती है, जबकि उत्तरार्द्ध प्रोग्राम में उपयोग की जाने वाली कुछ विशेषताओं (प्रोग्राम का हिस्सा, पुस्तकालय) , ढांचा)।

जबकि require केवल $:, require_relative से संबंधित पथों को संभाल सकता है जो एक विस्तार है जो वर्तमान निर्देशिका से संबंधित पथों को भी संभाल सकता है। require_relativerequire का सुपरसैट है, और require डिस्पेंस किया जा सकता है (हालांकि require_relativerequire का उपयोग करके लिखा गया है, इसलिए require को डिस्पेंस किया जाना है, तो इसे फिर से लिखा जाना चाहिए)।

संबंधित मुद्दे