के साथ लूप में वैरिएबल घोषित करें मैं पर्ल के लिए बिल्कुल नया हूं और हाल ही में कोड का निम्नलिखित टुकड़ा तैयार किया है। मैंने इसे बड़े पैमाने पर परीक्षण किया है और यह वांछित परिणाम देता है। हालांकि मुझे आश्चर्य हुआ कि अगर पर्ल के अधिक अनुभव वाले किसी व्यक्ति ने मुझे इसकी उपयोगिता पर सलाह दी है।पर्ल
असल में, मैंने लूप के अंदर 'my' कीवर्ड के साथ एक सरणी चर घोषित कर दिया है। मैं फिर इस घोषित सरणी चर के पते का उपयोग किसी अन्य सरणी चर में करता हूं जिसे लूप के लिए उपरोक्त घोषित करने से पहले घोषित किया गया है। एक अलग आकार हर बार
my @Array_of_ALL_Vals;
for my $iloop (0 .. 10){
my @Array_Vals;
.
Code in here to populate @Array_of_Vals
.
push @Array_of_ALL_Vals,\@Array_Vals;
}
@Array_Vals चर रहा है, सामान्य रूप में,: बुनियादी कोड संरचना इस तरह दिखता है। इसके अलावा लूप के अंदर परिभाषित सरणी @Array_Vals का उपयोग कोड में कहीं और नहीं किया जाता है और लूप के लिए स्थानीय होता है।
मेरी चिंता लूप के भीतर सरणी की घोषणा के साथ है। भले ही वेरिएबल का नाम समान होता है, हर बार जब मैं मानता हूं कि प्रत्येक लूप पुनरावृत्ति के लिए इसे एक अलग स्मृति पते पर असाइन किया जाता है। क्या ये सही है?
मैंने सोचा कि लूप के अंदर सरणी नाम में वृद्धिकर्ता जोड़ना बेहतर होगा ताकि नाम प्रत्येक बार अलग हो (@ Array_Vals1, @ Array_Vals2, ...)। फिर मैं इन मानों को @Array_of_ALL_Vals सरणी में धक्का दे सकता हूं और सुनिश्चित कर सकता हूं कि अंतिम सरणी मानों को ओवरराइट नहीं किया जाएगा। हालांकि कुछ खोज करने के बाद मैंने पाया कि इस तरह के तरीकों को हतोत्साहित किया गया है (वैरिएबल नाम परिवर्तनीय)।
तो मुझे लगता है कि मैं क्या पूछ रहा हूँ है: प्रत्येक पाश यात्रा के लिए एक ही सरणी नाम का उपयोग कर और फिर एक नई सरणी को यह सरणी के पते जोड़कर (@Array_of_ALL_Vals) मान्य की मेरी विधि है? या, क्या यह तथ्य है कि सभी पुनरावृत्तियों के बाद लूप सरणी (@Array_Vals) ओवरराइट हो रही है, मेरी सरणी @Array_of_ALL_Vals (जिसमें @Array_Vals सरणी के पते शामिल हैं) की वैधता को गड़बड़ कर रहा है?
कोई टिप्पणी
Gauss76
उत्तर के बजाय, इसे लूप के बाद'Array_of_ALL_Vals; 'के लिए लूप' प्रिंट \ @Array_Vals, "\ n"; 'और' प्रिंट "$ _ \ n" के अंदर रखें। –
कृपया ध्यान दें @ Сухой27 की टिप्पणी - यह एक अच्छा सवाल है, लेकिन _ आप इसे स्वयं समझ सकते हैं। – zdim
धन्यवाद ... मैं इसका परीक्षण करूंगा। – gauss76