gpt4 book ai didi

perl - 来自数组的散列分配中的后面的键是否总是覆盖前面的键?

转载 作者:行者123 更新时间:2023-12-05 04:29:21 26 4
gpt4 key购买 nike

鉴于此:

%h = (a => 3, b => 4, a => 5);

绝对 $h{a} == 5 成立,但在某些情况下 $h{a} == 3 因为内部字典散列或其他原因perl 内部行为?

另一种提问方式:即使在键冲突的情况下,perl 是否保证在将数组分配给散列时保持键顺序相同?

重复键条目对于诸如 %settings = (%defaults, %userflags) 这样的事情很方便,所以我可以硬编码默认值但用用户提供的标志覆盖。

最佳答案

是的,您可以相信赋值列表将从左到右求值,就像您可以相信以正确顺序对数组赋值一样。

sub DebugHash::TIEHASH { bless {}, shift }
sub DebugHash::CLEAR { %{shift} = (); }
sub DebugHash::STORE {
my ($tied, $key, $value) = @_;
print STDERR "STORE '$key' => '$value'\n";
$tied->{$key} = $value;
}

tie %hash, 'DebugHash';
%hash = (a => 'first', a => 'second', a => 'third',
a => 'fourth', a => 'next', a => 'last');

输出:

STORE 'a' => 'first'
STORE 'a' => 'second'
STORE 'a' => 'third'
STORE 'a' => 'fourth'
STORE 'a' => 'next'
STORE 'a' => 'last'

关于perl - 来自数组的散列分配中的后面的键是否总是覆盖前面的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72341555/

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