如何跳转到foreach迭代的特定点?

问题描述 投票:0回答:2

这是如何在数字列表中跳过迭代的最小工作示例:

#!/usr/bin/env perl

use strict;
use feature 'say';
use warnings FATAL => 'all';
use autodie ':default';

foreach my $n (0..29) {
    if ($n % 4 == 0) {
        $n += 5; # goes to $n+1, even though I increased $n to $n+5
        next;
    }
    say $n;
}

我无法更改

$n
,使其在数字内跳跃多次迭代。

也就是说,我希望

next
向上移动 5,而不是 1。

如何跳过 foreach 循环的多次迭代?

perl
2个回答
0
投票

您可以使用 C 风格的 for 循环来代替:

for (my $n = 0; $n <= 29; $n++) {
    if ($n % 4 == 0) {
        $n += 5; 
        next;
    }
    say $n;
}

0
投票
for ( my $n = 0; $n <= 29; ) {
   if ($n % 4 == 0) {
      $n += 5;
   } else {
      ++$n;
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.