В чем разница между for и foreach в Perl?

В языке программирования Perl есть ключевые слова for и foreach. Они используются для того чтобы создавать циклы.

Между ними нет никакой разницы. Везде вместо for всегда можно использовать foreach и вместо foreach всегда можно использовать for.

Но есть рекомендация. В Perl есть 2 вида циклов которые можно сделать с помощью for или foreach. Рекомендация состоит в том что для каждого типа цикла всегда использовать свое ключевое слово. Для цикла похожего на цикл в языке Си использовать только for, а для других циклов использовать только foreach. Если следовать этому простому правилу то не возникает вопрос когда что использовать, а читать код становится чуть-чуть проще.

Цикл как в языке Си

После языка программирования Си этот тип цикла в Perl выглядит очень знакомо.

После for в скобках идет 3 фрагмента кода:

  • начальное значение
  • проверка
  • изменение
▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    warn $i;
}

Это же код будет работать точно так же есть вместо for использовать foreach. Но есть рекомендация для этого типа цикла всегда использовать только for и не использовать foreach.

Цикл — перебор элементов

Второй тип цикла который может быть написан с использованием for или foreach в Perl — это перебор элементов в списке. Этот тип цикла совершенно не похож на то что есть в языке программирования Си.

▶ Run
#!/usr/bin/perl

foreach my $el (1, 2, 3) {
    warn $el;
}

Если написать for вместо foreach, то этот цикл будет работать точно так же. Но есть рекомендация для этого типа цикла всегда использовать только foreach и не использовать for.

Постфиксный цикл

Разновидность предыдущего цикла. Этот вариант тоже будет работать одинаково и в случае for и foreach, но рекомендация в этом случае использовать только foreach.

▶ Run
#!/usr/bin/perl

warn $_ foreach (1, 2, 3);

Другие статьи

Комментарии