foreach оператор выполняет итерации в порядке, или это мог бы быть произвольный порядок?

Я задавался вопросом, выполняет ли foreach оператор в Perl итерации объектов в массиве в последовательном порядке? Таким образом, я получаю различные результаты, если я использую foreach многократно на том же массиве или списке?

5
задан brian d foy 2 May 2010 в 19:15
поделиться

3 ответа

Да, элементы в инструкции foreach повторяются по порядку.

Ваш вопрос может возникнуть из-за путаницы при переборе элементов хеша:

my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
foreach my $key (keys %hash) { print $key } ;    # output is "cab"

Но кажущийся случайным порядок является артефактом того, как данные хранятся в хеш-таблице Perl (данные в хеш-таблице Perl не упорядочены) . Именно оператор keys «изменяет» порядок хеш-таблицы, а не foreach .

9
ответ дан 13 December 2019 в 22:03
поделиться

Если вы не будете менять список в промежутках, он всегда будет в последовательном порядке.

1
ответ дан 13 December 2019 в 22:03
поделиться

Причина, по которой порядок хэшей цикла foreach в Perl кажется случайным, содержится в документе perlsec, ссылка на который здесь

0
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: