पर्ल में, जब आपके पास नेस्टेड डेटा संरचना होती है, तो डी-रेफरेंसिंग तीरों को 2 डी और घोंसले के स्तर तक छोड़ने की अनुमति है। दूसरे शब्दों में, निम्न दोनों वाक्यविन्यास समान हैं:पर्ल में नेस्टेड डेरफ्रेंसिंग तीर: छोड़ने या छोड़ने के लिए नहीं?
my $hash_ref = { 1 => [ 11, 12, 13 ], 3 => [31, 32] };
my $elem1 = $hash_ref->{1}->[1];
my $elem2 = $hash_ref->{1}[1]; # exactly the same as above
अब, मेरे सवाल है, इसका कोई खास कारण अन्य के ऊपर एक शैली का चयन करने के लिए है?
यह स्टाइलिस्ट विवाद की एक लोकप्रिय हड्डी प्रतीत होता है (बस एसओ पर, मैं गलती से this और this में 5 मिनट की जगह में घुस गया)।
अब तक सामान्य संदिग्धों की लगभग कोई भी कुछ भी निश्चित कहते हैं:
- perldoc केवल कहते हैं, "आप सूचक dereferencing तीर छोड़ देते हैं करने के लिए स्वतंत्र हैं।"
- Conway का "पर्ल बेस्ट प्रैक्टिस" कहता है, "जब भी संभव हो, तीरों के साथ अव्यवस्था" कहता है, लेकिन ऐसा लगता है कि मुख्य संदर्भ को संदर्भित करने के संदर्भ में केवल लागू होता है, न कि 2 डी स्तर के नेस्टेड डेटा संरचनाओं पर वैकल्पिक तीर।
"मास्टरिंग Bioinfirmatics के लिए पर्ल" लेखक जेम्स Tisdall बहुत ठोस वरीयता नहीं देता है या तो:
"तेज बुद्धि पाठक देखा है कि हम सरणी के बीच तीर ऑपरेटरों को छोड़ते हुए लग रहे हो सकता है सबस्क्रिप्ट्स। (आखिरकार, ये अज्ञात सरणी के अज्ञात सरणी अज्ञात सरणी आदि के अज्ञात सरणी हैं, इसलिए उन्हें [$ array -> [$ i] -> [$ j] -> [$ के]?) पर्ल इसे अनुमति देता है; परिवर्तनीय नाम के बीच केवल तीर ऑपरेटर और पहली सरणी सबस्क्रिप्ट आवश्यक है। यह आंखों पर चीजों को आसान बनाता है और कार्पल सुरंग सिंड्रोम से बचने में मदद करता है। दूसरी तरफ, आप को पर डेरफ़्रेंसिंग तीर रखने के लिए पसंद कर सकते हैं, यह स्पष्ट कर लें कि आप संदर्भों से निपट रहे हैं। आपकी पसंद। "
UPDATED" मध्यवर्ती पर्ल ", अपने सह लेखक ब्रायन डी Foy के अनुसार, तीर छोड़ते हुए अनुशंसा करता है। नीचे ब्रायन की पूर्ण उत्तर देखें।
व्यक्तिगत रूप से, मैं 'के पक्ष में हूँ "हमेशा में तीर डाल दिया, क्योंकि यह अधिक पठनीय है और स्पष्ट है कि वे एक संदर्भ के साथ काम कर रहे"
अद्यतन अधिक विशिष्ट फिर से होने के लिए:। पठनीयता, एक बहु नेस्टेड अभिव्यक्ति के मामले में wher ई सबस्क्रिप्ट स्वयं अभिव्यक्ति हैं, तीर अभिव्यक्तियों को एक दूसरे से स्पष्ट रूप से अलग करके अभिव्यक्तियों को "दृष्टि से टोकननाइज़" करने में सहायता करते हैं।
ब्रायन की - प्रणाली मुझे नहीं बताया है कि आप अपने जवाब है, देर से देख के लिए खेद अपडेट किया गया। – DVK