当在具有相同操作序列的相同环境(也是相同的包含数据)中运行时,是否保证哈希表将以固定顺序迭代(keys %hashtable
)?
答案 0 :(得分:5)
没有。即使在某些版本上它在实践中也是如此,但是从来没有任何 promise 以任何特定顺序生成散列键,并且开发人员总是根据任何给定的顺序发出警告。从版本5.18开始,任何两次运行的订单几乎总是不同。
但 承诺的是keys %hash
和values %hash
将按相应的顺序生成结果( n 键对应于 n th value),只要在此期间未修改%hash
。
答案 1 :(得分:1)
它取决于perl版本和环境。
在版本5.18中,行为已更改,即使在一个接一个的两个查询中也可以更改订单 这可以通过PERL_PERTURB_KEYS环境变量
来控制你可以在这里查看更多信息