foreach 语句是按顺序迭代还是可能是随机顺序?
我想知道 Perl 中的 foreach 语句是否以一致的顺序迭代数组中的项目?也就是说,如果我在同一个数组或列表上多次使用 foreach ,是否会得到不同的结果?
I was wondering if the foreach statement in Perl iterates the items in an array in consistent order? That is, do I get different results if I use foreach multiple times on the same array or list?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,
foreach
语句中的项目按顺序迭代。您的问题可能源于对散列元素的迭代的困惑:
但看似随机的顺序是数据如何存储在 Perl 散列表中的产物(Perl 散列表中的数据没有排序)。 “改变”哈希表顺序的是
keys
语句,而不是foreach
。Yes, items in a
foreach
statement are iterated in order.Your question might arise from confusion over iterating over the elements of a hash:
But the seemingly random order is an artifact of how data are stored in a Perl hash table (data in a Perl hash table are not ordered). It is the
keys
statement that is "changing" the order of the hash table, not theforeach
.如果您在两次之间不更改列表,它将保持一致的顺序。
If you don't change the list in between times, it will alawys be in a consistent order.
Perl 的 foreach 循环哈希排序看似随机的原因在 perlsec 文档中,链接为 这里
The reasoning for why Perl's foreach loop hash ordering is seemingly random is in the perlsec document, linked here