gpt4 book ai didi

perl - 如果您在标量上下文中计算哈希值,您会得到什么?

转载 作者:行者123 更新时间:2023-12-02 01:34:23 24 4
gpt4 key购买 nike

考虑以下代码片段:

use strict;
use warnings;

my %a = ( a => 1,
b => 2,
c => 'cucu',
d => undef,
r => 1,
br => 2,
cr => 'cucu',
dr => '321312321',

);

my $c = %a;

print $c;

结果是5/8,我不明白这代表什么。我在某处读到,这个分数看起来结果中的数字可能代表哈希中的桶数,但显然情况并非如此。

有人知道如何在标量上下文中评估 Perl 哈希值吗?

编辑

我添加了一些其他哈希值来打印:

use strict;
use warnings;

use 5.010;


my %a = ( a => 1,
b => 2,
c => 'cucu',
d => undef,
r => 1,
br => 2,
cr => 'cucu',
dr => '321312321',

);

my $c = %a;

say $c; # 5/8


%a = ( a => 1,
b => 21,
c => 'cucu',
br => 2,
cr => 'cucu',
dr => '321312321',

);

$c = %a;

say $c; # 4/8

%a = ( a => 1,
b => 2,
c => 'cucu',
d => undef,
r => 1,
br => 2,
cr => 'cucu',
dr => '321312321',
drr => '32131232122',
);

$c = %a;

say $c; #6/8

那么,您将像 a => 1 这样的“元组”称为哈希中的存储桶吗?在这种情况下,为什么最后一个散列有 9 个“元组”时仍然以 8 作为分母?

感谢大家到目前为止的回复:)

最佳答案

[OP 正在询问 Perl 5.26 之前的标量上下文中哈希返回的字符串的格式。从 Perl 5.26 开始,标量上下文中的散列不再返回这种格式的字符串,而是返回散列中的元素数量。如果您需要此处讨论的值,可以使用 Hash::Utilbucket_ratio().]

哈希是一个链表数组。哈希函数将键转换为数字,该数字用作存储值的数组元素(“桶”)的索引。链表处理多个键散列到同一索引的情况(“冲突”)。

分数的分母是桶的总数。

分数的分子是具有一个或多个元素的桶的数量。

对于具有相同元素数量的哈希,数字越大越好。返回 6/8 的碰撞比返回 4/8 的碰撞少。

关于perl - 如果您在标量上下文中计算哈希值,您会得到什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7427381/

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