मुझे ओओ पर्ल और my $self = shift;
के चौराहे को समझने में वास्तव में कठिन समय हो रहा है। इन व्यक्तिगत तत्वों पर प्रलेखन बहुत अच्छा है, लेकिन उनमें से कोई भी नहीं है कि मुझे यह पता चला कि वे एक साथ कैसे काम करते हैं।
मैं गुणों के साथ मॉड्यूल बनाने के लिए मूस का उपयोग कर रहा हूं, और निश्चित रूप से यह मॉड्यूल के भीतर मॉड्यूल की विशेषता को संदर्भित करने के लिए उपयोगी है। मुझे उस चर के मॉड्यूल के गुणों को असाइन करने के लिए एक सबराउटिन के भीतर my $self = shift;
का उपयोग करने के लिए बार-बार कहा गया है। यह समझ में आता है और काम करता है, लेकिन जब मैं subroutine के लिए तर्क पारित कर रहा हूं, तो यह प्रक्रिया @ARGV
सरणी का पहला तत्व स्पष्ट रूप से लेती है और इसे $self
पर भी असाइन करती है।
क्या कोई इस बात का स्पष्टीकरण प्रदान कर सकता है कि मैं मॉड्यूल के गुणों में आंतरिक पहुंच प्राप्त करने के लिए शिफ्ट का उपयोग कैसे कर सकता हूं, जबकि @ARGV
सरणी में तर्कों में गुजर रहा हूं?
'शिफ्ट' डिफ़ॉल्ट रूप से '@ _'' के लिए कहा जाता है, या उप-स्तर कोड से कॉल किया गया है, तो @ @ ARGV'। – cjm
@cjm ठीक है आप हैं। जवाब में इसका उल्लेख करेंगे। – Nikhil
बहुत बढ़िया। यह बहुत उपयोगी है। मैंने एक ऐसे मुद्दे में भाग लिया जहां मेरा $ self = shift खुद को पहले तर्क में स्थापित कर रहा था जिसे मैंने वास्तव में सबराउटिन में पारित किया था। हां, @_ में पहला तत्व ऑब्जेक्ट नहीं था, लेकिन वास्तव में मैंने जो पहला तर्क दिया था, वह वास्तव में था। यह कोई उच्च स्तर का कारण होगा? (मैंने इस समस्या के आसपास काम किया है और अब वास्तविक कोड नहीं है) –