代码之家  ›  专栏  ›  技术社区  ›  con

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

  •  -1
  • con  · 技术社区  · 1 年前

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

    #!/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循环的多次迭代?

    2 回复  |  直到 1 年前
        1
  •  2
  •   ikegami Gilles Quénot    1 年前

    您可以使用“C样式的循环”。

    for ( my $n = 0; $n <= 29; ) {
       if ($n % 4 == 0) {
          $n += 5;
          next;
       }
    
       say $n;
       ++$n;
    }
    
    for ( my $n = 0; $n <= 29; ) {
       if ($n % 4 == 0) {
          $n += 5;
       } else {
          say $n;
          ++$n;
       }
    }
    
        2
  •  -1
  •   TLP    1 年前

    循环使用C样式:

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