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

abl*_*mit 5 iteration perl foreach

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

mob*_*mob 9

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

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

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

但看似随机的顺序是数据如何存储在Perl哈希表中的工件(Perl哈希表中的数据未被排序).这是keys声明"改变"哈希表的顺序,而不是foreach.