Perl是否保证返回一致排序的哈希键?

erj*_*ang 9 perl hash key

给出类似的东西

foreach (keys %myHash) {
   ... do stuff ...
}

foreach (keys %myHash) {
   ... do more stuff ...
}
Run Code Online (Sandbox Code Playgroud)

如果散列没有被改变,Perl是否保证以一致的顺序迭代密钥?

Ada*_*kin 27

是的.来自perldoc -f keys:

密钥以明显随机的顺序返回.实际随机顺序是受试者在Perl的未来版本改变,但它是保证相同的顺序任一valueseach函数产生(假定散列未被修改).从Perl 5.8.1开始,出于安全原因,即使在不同的Perl运行之间,顺序也是不同的(参见"算法复杂性攻击" perldoc perlsec).

(强调我的)

  • +1如果人们至少试图阅读Perl附带的优秀文档,那就太棒了. (12认同)