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

标签 perl foreach iteration

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

最佳答案

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

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

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

但看似随机的顺序是数据如何存储在 Perl 哈希表中的产物(Perl 哈希表中的数据没有排序)。它是 keys “改变”哈希表顺序的语句,而不是 foreach .

关于perl - foreach 语句是按顺序迭代还是可能是随机顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747824/

相关文章:

java - 将所有 Person 对象添加到组合框中

javascript - 如何动态创建 Javascript/Jquery 事件?

python - 为什么我会收到此错误?类型错误 : iter() returned non-iterator of type 'NoneType'

mysql - Laravel:通过连接集合进行迭代

perl - 如何使用 Perl 读取文件中两行之间的所有行?

Perl 5 : assignment of an anonymous arrayref, 数组仍然为空 = 复制构造?

php - PHP 中 FOR 与 FOREACH 的性能

caching - 当我重复使用旧的缓存数据太多时间时,Spark Dataframe 突然变得非常慢

javascript - Perl - 向主机提交 Javascript 操作

arrays - 如何在 perl 中将数组 [key1,val1] 映射到哈希 { key1 => val1}?