在标量上下文中曾经在Perl中评估哈希的原因是什么?
题
我意识到在标量上下文中评估Perl中的数组很有用:它会导致#个元素。
但是能够在标量上下文中评估哈希的实际用途是什么?例如
-
my $scalar_value = %hash;
-
scalar(%hash)
据我了解,它会产生一个类似“
3/4
”的字符串,其中提供了一些有关哈希内部的信息,这些信息似乎仅对调试有用。
解决方案
它产生一个可用作TRUE / FALSE标志的值,以了解哈希是否为空(无键)。
例如: 通用标签
if
由于将其用作布尔表达式而将其强制进入标量上下文。
与在标量上下文中使用@array
测试空性非常相似:
通用标签
其他提示
标量(%hash)可让您检查哈希算法是否正常运行。如果您有1000个密钥,并且看到类似2/16的信息,则意味着所有密钥只能解析到16个分配的存储桶中的2个。这意味着您所有的键都非常相似,并且会导致很多冲突,从而导致在存储桶中进行长时间的顺序搜索。
默认存储桶数为8 通用标签
用1000个存储桶对散列进行预填充(最接近2的幂) 通用标签
当您为perl OO祝福哈希时,这也有帮助。 如果您知道会有很多按键,则可以加快速度。
不隶属于 StackOverflow