Где задокументирован постфикс Perl `for`? - PullRequest
19 голосов
/ 08 июня 2011

Недавно я наткнулся на следующий фрагмент кода

$count_stuff{$_}++ for @stuff;

Это довольно удобный способ использовать хэш для подсчета вхождений строк в массиве, например.Я понимаю, , как это работает, но не , почему это работает.Я не могу найти документацию для этого способа использования для .

Почему это работает?А где документация?

Ответы [ 4 ]

19 голосов
/ 08 июня 2011

Это задокументировано на странице руководства "perlsyn", в разделе Модификаторы операторов (в котором говорится о синтаксисе постфикса) и в разделе Циклы Foreach (в которых поясняется, что "для" и " foreach "являются синонимами).

3 голосов
/ 08 июня 2011

Perl имеет постфиксные варианты для многих своих операторов. Просто вы пишете ключевое слово после тела с одним утверждением.

Вы можете использовать if, unless и т. Д. Таким же образом.

1 голос
/ 20 августа 2016

Согласно эта страница задокументирована здесь
И вы должны прочитать Петли по каждому элементу , чтобы получить ответ на свой вопрос.

Короче, если ты это хорошо понимаешь:

for my $item ( @array ) { print $item }

И знать синтаксис for и print:

LABEL for VAR (LIST) BLOCK
print LIST

Согласно документу foreach : If VAR is omitted, $_ is set to each value.
И в соответствии с документом печать : If LIST is omitted, prints $_

Итак, мы можем уменьшить приведенный выше пример:

for ( @array ) { print }

В форме постфикса это будет выглядеть так:

print for @array;
0 голосов
/ 08 июня 2011

Мне кажется, что стандартный Perl for. Принимает каждый элемент и выполняет тело (в данном случае ранее) с $_, замененным каждым элементом. Это просто альтернативный синтаксис для: for (@array) { statements }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...