【发布时间】:2018-06-26 12:58:18
【问题描述】:
我已经多次看到下面这段代码将一个哈希连接到另一个哈希
%hash1 = ('one' => "uno");
%hash2 = ('two' => "dos", 'three' => "tres");
@hash1{keys %hash2} = values %hash2;
我认为每次调用“values”或“keys”函数时,它们的输出顺序都是随机的。如果是这样,上面的语句如何在两边以正确的顺序获取键和值?
换句话说,为什么在合并两个哈希后没有机会在 %hash1 中获得 'two' => 'tres'? Perl 是否足够聪明,知道如果在同一行调用“键”和“值”,那么键和值必须以相同的顺序给出?
【问题讨论】:
-
简化:哈希算法的工作方式是在程序的相同执行期间,给定哈希中的项目的顺序是随机的,但保证相同。如果数据结构发生变化,顺序可能会发生变化。第二次调用程序时,不保证是一样的。