पर्ल foreach लूपिंग सरणी, सरल सवाल - सरणी, perl, loops, के लिए लूप

वास्तव में सरल perl सवाल, लेकिन मुझे बहुत भ्रमित।

foreach $ val (@ {$ obj-> कुछ ()}) {
# यह काम
}

@array = $ obj-> कुछ ();
foreach $ val (@array) {
# यह नहीं करता
}

मुझे दूसरा काम करने के लिए क्या करने की ज़रूरत है (यानी: सरणी को अलग से असाइन करें), मैंने पहले फॉर्म को एक उचित बिट का उपयोग किया है, लेकिन वास्तव में यह नहीं समझता कि यह अलग-अलग क्या करता है।

उत्तर:

जवाब के लिए 8 № 1

शायद:

@array = @{$obj->something()};

पहले उदाहरण से, ऐसा लगता है $obj->something() एक सरणी संदर्भ देता है, आपको इसे अव्यवस्थित करने की आवश्यकता होगी।

इसके अलावा, आपको वास्तव में चाहिए use strict; तथा use warnings;, और अपने चर जैसे घोषित करें

my @array = @{$obj->something()};
foreach my $val (@array) {
# this does not
}

यह गलतियों को खोजने में बहुत आसान बना देगा (हालांकि शायद यह नहीं), यहां तक ​​कि एक तीन पंक्ति स्क्रिप्ट में भी।


संबंधित सवाल
सबसे लोकप्रिय