gpt4 book ai didi

perl - 如何保留嵌套 Perl 哈希的插入顺序?

转载 作者:行者123 更新时间:2023-12-04 03:46:46 25 4
gpt4 key购买 nike

我可以使用 IxHash 来记住哈希的插入顺序。

use Tie::IxHash;

my %hash;
tie(%hash, 'Tie::IxHash');
%hash = (
x => 10,
z => 20,
q => { a1 => 1, a3 => 5, a2=>2,},
y => 30,
);

printf("keys %s\n", join(" ", keys %hash));

=> keys x z q y

嵌套哈希怎么样?
printf("keys %s\n", join(" ", keys %{$hash{q}}));
keys a2 a1 a3

我怀疑答案是否定的,因为 q 哈希是匿名的,并且在 IxHash 看到它之前订单就丢失了。

我知道我可以在 $hash{q} 上做 Tie 然后添加元素,但我喜欢使用单个赋值来构建哈希。

有诀窍吗?

最佳答案

有多种方法可以做到这一点,我只需将领带包装在一个子例程中,以便它易于内联使用:

use Tie::IxHash;

sub ordered_hash (%) {
tie my %hash => 'Tie::IxHash';
%hash = @_;
\%hash
}

进而:
tie my %hash => 'Tie::IxHash';

%hash = (
x => 10,
z => 20,
q => ordered_hash( a1 => 1, a3 => 5, a2=>2 ),
y => 30,
);
(%)子程序上的原型(prototype)告诉 perl 它需要一个包含偶数个元素的列表

关于perl - 如何保留嵌套 Perl 哈希的插入顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com