我意识到在标量上下文中评估Perl中的数组很有用:它会导致#个元素。

但是能够在标量上下文中评估哈希的实际用途是什么?例如

  • my $scalar_value = %hash;

  • scalar(%hash)

    据我了解,它会产生一个类似“ 3/4”的字符串,其中提供了一些有关哈希内部的信息,这些信息似乎仅对调试有用。

有帮助吗?

解决方案

它产生一个可用作TRUE / FALSE标志的值,以了解哈希是否为空(无键)。

例如: 通用标签

if由于将其用作布尔表达式而将其强制进入标量上下文。

与在标量上下文中使用@array测试空性非常相似: 通用标签

其他提示

标量(%hash)可让您检查哈希算法是否正常运行。如果您有1000个密钥,并且看到类似2/16的信息,则意味着所有密钥只能解析到16个分配的存储桶中的2个。这意味着您所有的键都非常相似,并且会导致很多冲突,从而导致在存储桶中进行长时间的顺序搜索。

默认存储桶数为8 通用标签

用1000个存储桶对散列进行预填充(最接近2的幂) 通用标签

当您为perl OO祝福哈希时,这也有帮助。 如果您知道会有很多按键,则可以加快速度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top