/ / मेरे $i (0, 1, 2 ) के लिए कुछ और स्टाइलिश के साथ बदलना? - पर्ली

कुछ अधिक स्टाइलिश के साथ मेरे $ i (0, 1, 2) की जगह? - पर्ल

मैं आमतौर पर अपने पर्ल परीक्षण इस तरह लिखता हूं

 for my $i ( 0, 1, 2 ) {
is_deeply( $fetch_public_topic_ids->[$i],
$expected_sorted_topic_list->[$i], "Match" );

कब $expected_sorted_topic मेरे टेस्ट केस डेटा के लिए एक सरणी रेफरी है। मुझे कभी-कभी फीडबैक मिलता है कि मुझे अपने "for" में 0, 1, 2, 3... या 0...5 लिखने से बचना चाहिए, क्योंकि इसे "बैड स्टाइल" माना जाता है?

लेकिन इसके बजाय मेरे पास क्या विकल्प हैं?

उत्तर:

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

आप किसी सरणी के अनुक्रमणिका पर पुनरावृति करना चाहते हैं, लेकिन अनुक्रमणिका के निर्धारण में कोई सरणी आंकड़े नहीं हैं। समस्या इंडेक्स की हार्डकोडिंग है।

for my $i (0..$#$fetch_public_topic_ids) {
...
}

जवाब के लिए 5 № 2

आप लूप का उपयोग क्यों कर रहे हैं?

आपको बस करने में सक्षम होना चाहिए

is_deeply( $fetch_public_topic_ids, $expected_sorted_topic_list );

उत्तर № 3 के लिए 1

अपने परीक्षणों को हैश की एक सरणी में रखें:

my @tests = (
{
fetch_public_topic_ids     => [ "whatever" ],
expected_sorted_topic_list => [ "whatever" ],
test_name                  => "Match",
},
# repeat as needed
);

for my $test ( @tests ){
is_deeply( $test->{ fetch_public_topic_ids     },
$test->{ expected_sorted_topic_list },
$test->{ test_name                  },
);
}