2011-02-06 14 views
25

मैं कोड में -> देख रहा हूं और मुझे बिल्कुल यकीन नहीं है कि इसका क्या अर्थ है। उदाहरण के लिए:पर्ल में -> तीर क्या करता है?

@top_links = @{$m->links}; 

यह लाइन क्या करती है? इसके अलावा, मैं शायद इसके बारे में कहां पढ़ सकता हूं?

उत्तर

28

perlop में The Arrow Operator देखें:

"->" एक इन्फ़िक्स भिन्नता ऑपरेटर, बस के रूप में यह सी और सी में है ++ है। यदि दाहिने तरफ या तो [...], {...}, या (...) सबस्क्रिप्ट है, तो बाईं तरफ क्रमशः किसी सरणी, हैश या सबराउटिन के लिए एक कठिन या प्रतीकात्मक संदर्भ होना चाहिए। (या तकनीकी रूप से बोलते हुए, एक हार्ड संदर्भ रखने में सक्षम एक स्थान, यदि यह एक सरणी या हैश संदर्भ असाइनमेंट के लिए उपयोग किया जा रहा है।) perlreftut और perlref देखें।

अन्यथा, दायीं तरफ एक विधि का नाम या एक सरल स्केलर चर है जिसमें विधि का नाम या सबराउटिन संदर्भ होता है, और बाएं तरफ या तो एक वस्तु (एक धन्य संदर्भ) या एक वर्ग का नाम होना चाहिए (यानी, एक पैकेज नाम)। perlobj देखें।

+5

अंतिम पंक्ति के लिए दूसरा थोड़ा भ्रामक है। यदि तीर के दाहिने तरफ स्केलर एक कोड रेफरी है, तो इससे कोई फर्क नहीं पड़ता कि बाईं तरफ क्या है।'My $ say_array = sub {print" @ {$ _ [0]} \ n "}; 'फिर आप' [1, 2, 3] -> $ say_array जैसे लाइनें लिख सकते हैं; 'जो प्रिंट करता है' 1 2 3 ' –

+6

उल्लेख कर सकता है कि यह कई अन्य भाषाओं जैसे पायथन, जावा, जावास्क्रिप्ट इत्यादि में डॉट ऑपरेटर के समान है –

+2

@Eric Strom: मुझे एक बग की तरह दिखता है – ysth

3

बाहरी @{} हिस्सा एक भिन्नता है - यह संकेत मिलता है $m->links एक संदर्भ एक सरणी के लिए है, इसलिए इस ऑपरेटर यह deferences सरणी सीधे है, जो तब के लिए @top_links

अध्याय 8 कॉपी किया जाता है का उल्लेख करने के 'Camel Book' संदर्भों के बारे में जानने के लिए, या पर्ल दस्तावेज़ के perlref अनुभाग के लिए एक अच्छी जगह है।

-> तीर ऑपरेटर एक ऑब्जेक्ट अव्यवस्था है, इस मामले में links$m ऑब्जेक्ट का सदस्य ला रहा है। इसी प्रकार, ऊंट बुक कवर के बाद के अध्याय पर्ल के ऑब्जेक्ट उन्मुख समर्थन में विस्तार से समर्थन करते हैं। पर्ल दस्तावेज़ के perlobj अनुभाग भी देखें।

12

सामान्य रूप से, -> ड्रेफरेंस पर संकेत देता है। यह वाक्यविन्यास सी

आपके उदाहरण में, इसका अर्थ है विधि कॉल: $m में ऑब्जेक्ट उदाहरण से कॉल विधि links। यह Modern Perl में अध्याय ऑब्जेक्ट्स में समझाया गया है। perlsub, perlfaq7, perlobj, perltoot के टुकड़े विवरण प्रदान करते हैं।

सामान्य रूप से संदर्भों के लिए, search Stack Overflow; यह एक आवर्ती विषय है।

कक्षा> विधि पैकेज कक्षा में सबरूटीन विधि invokes

हालांकि यह अपने कोड नमूने से पूरी तरह से अलग है:

0

पर्ल तीर ऑपरेटर एक अन्य उपयोग नहीं है। शीर्षक में प्रश्न के लिए पूर्णता के लिए इसे शामिल करें।

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