तात्कालिकता और प्रारंभिक विधि

01

02 के

तात्कालिकता और प्रारंभिक विधि

रूबी ऑन रेल्स सीखना: irb के साथ खेलना
brnzwngs / फ्लिकर / सीसी बाय 2.0

जब आप रूबी में एक वर्ग को परिभाषित करते हैं, तो रूबी एक नए वर्ग ऑब्जेक्ट को असाइन करेगा वर्ग नाम स्थिर. उदाहरण के लिए, यदि आप कहते थे क्लास पर्सन; समाप्त, यह लगभग बराबर है व्यक्ति = वर्ग. यह वर्ग वस्तु प्रकार का है कक्षा, और उन उदाहरणों की प्रतियों के उदाहरण बनाने के लिए उपयोगी कई तरीके रखती है।

02

02 के

उदाहरण बनाना

किसी कक्षा का नया उदाहरण बनाने के लिए, उस कक्षा को कॉल करें नया तरीका। डिफ़ॉल्ट रूप से, यह कक्षा के लिए आवश्यक मेमोरी आवंटित करेगा और नई वस्तु का संदर्भ लौटाएगा। तो, यदि आप एक नया उदाहरण बनाने के लिए थे व्यक्ति कक्षा, आप फोन करेंगे Person.new.

जबकि पहली बार में यह थोड़ा पीछे की ओर लगता है, वहाँ कोई नहीं है नया रूबी या किसी विशेष वाक्यविन्यास में कीवर्ड। नई वस्तुओं को एक सामान्य विधि के माध्यम से बनाया जाता है, जो सभी ने कहा और किया, अपेक्षाकृत सरल चीजें करता है।

प्रारंभिक उदाहरण

एक रिक्त वस्तु बहुत रोमांचक नहीं है। अपनी वस्तु का उपयोग शुरू करने के लिए, पहले इसे शुरू करना चाहिए (यह मानते हुए कि इसमें कोई भी है

instagram viewer
आवृत्ति के चर कि शुरुआती की जरूरत है)। यह के माध्यम से किया जाता है इनिशियलाइज़ तरीका। रूबी आपके पास जाने वाले किसी भी तर्क को पारित करेगी SomeClass.new पर है इनिशियलाइज़ नई वस्तु पर। तब आप ऑब्जेक्ट की स्थिति को प्रारंभ करने के लिए सामान्य चर असाइनमेंट और विधियों का उपयोग कर सकते हैं। इस उदाहरण में, ए व्यक्ति वर्ग प्रस्तुत किया गया है जिसका इनिशियलाइज़ विधि एक नाम और आयु तर्क लेगी, और उन्हें उदाहरण चर के लिए असाइन करेगी।

वर्ग व्यक्ति को आरंभीकृत (नाम, आयु) @name, @age = नाम, आयु के अंत में बॉब = व्यक्ति.न्यू ('बॉब', 34)

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

वस्तुओं को नष्ट करना

सामान्य तौर पर, आप रूबी में वस्तुओं को नष्ट नहीं करते हैं। यदि आप C ++ या किसी अन्य भाषा से बिना कचरा कलेक्टर के आ रहे हैं, तो यह अजीब लग सकता है। लेकिन रूबी (और अधिकांश अन्य कचरा एकत्र की गई भाषा) में, आप वस्तुओं को नष्ट नहीं करते हैं, आप बस इसका जिक्र करना बंद कर देते हैं। अगले कचरा संग्रह चक्र पर, किसी भी वस्तु का जिक्र किए बिना वह अपने आप नष्ट हो जाएगा। परिपत्र संदर्भ के साथ कुछ कीड़े हैं, लेकिन सामान्य रूप से यह त्रुटिपूर्ण रूप से काम करता है और आपको "विध्वंसक" की भी आवश्यकता नहीं है।

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

वस्तुओं की प्रतियां बनाना

रूबी को संदर्भ से पास किया गया है। यदि आप किसी वस्तु के संदर्भ को पास करते हैं तरीका, और वह विधि एक ऐसी विधि कहलाती है जो उस वस्तु की स्थिति को संशोधित करती है, अनपेक्षित परिणाम हो सकते हैं। इसके अलावा, विधियाँ ऑब्जेक्ट के संदर्भ को बहुत बाद में संशोधित करने के लिए सहेज सकती हैं, जिससे बग के लिए विलंबित प्रभाव हो सकता है। इससे बचने के लिए, रूबी वस्तुओं को डुप्लिकेट करने के लिए कुछ तरीके प्रदान करता है।

किसी भी वस्तु की नकल करने के लिए, बस कॉल करें some_object.dup तरीका। एक नई वस्तु आवंटित की जाएगी और ऑब्जेक्ट के सभी उदाहरण चर पर कॉपी किए जाएंगे। हालाँकि, उदाहरण के वेरिएबल की नकल करना यह वही था जिसे टालना चाहिए था: इसे "उथली प्रति" कहा जाता है। अगर आप एक फ़ाइल को एक इंस्टेंस वेरिएबल में रखने वाले थे, दोनों डुप्लिकेट ऑब्जेक्ट्स अब उसी का जिक्र करेंगे फ़ाइल।

बस ध्यान रखें कि प्रतियां उपयोग करने से पहले उथली प्रतियां हैं dup तरीका। लेख देखें रूबी में डीप कॉपियां बनाना अधिक जानकारी के लिए।

instagram story viewer