foreach语句是按顺序迭代还是可能是随机顺序?

时间:2010-04-30 21:32:08

标签: perl foreach iteration

我想知道Perl中的foreach语句是否按照一致的顺序迭代数组中的项?也就是说,如果我在同一个数组或列表上多次使用foreach,我会得到不同的结果吗?

3 个答案:

答案 0 :(得分:9)

是的,foreach语句中的项目按顺序迭代。

您的问题可能源于对迭代元素的混淆:

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

但看似随机的顺序是如何将数据存储在Perl哈希表中的工件(Perl哈希表中的数据未被排序)。 keys语句是“更改”哈希表的顺序,而不是foreach

答案 1 :(得分:1)

如果您不在两次之间更改列表,它将始终按照一致的顺序。

答案 2 :(得分:0)

为什么Perl的foreach循环哈希排序看似随机的原因在perlsec文档中,链接here

相关问题