我有一个数组,我正在检查哈希(由我创建)中的值。想法是检查哈希键中是否存在数组的每个元素。如果不存在,则应说不存在的元素出现零次。我创建的用于计算第二个数组上数字频率的哈希值。
这是我所做的:
use strict;
use warnings;
sub main {
my @Source = ("A", "B", "D");
my @ArrToHash = ("A", "C", "A", "B", "E", "F");
my %hashy;
++$hashy{$_} for @ArrToHash;
foreach my $e (@Source) {
if (exists $hashy{$e}) {
print "$e are $hashy{$e}\n";
}
}
}
main();
我正进入(状态
A是2
B是1
实际上,我希望:
A是2
B是1
D为0
有什么线索吗?如何修复我的代码?
if (exists $hashy{$e}) {
print "$e are $hashy{$e}\n";
}else{
print "$e are 0\n";
}
要么
printf "%s are %d\n", $e, $hashy{$e} // 0 ;
评论:
我更喜欢$hashy{$e} // 0
。$hashy{$e}
如果$hashy{$e}
退出并且不是undef,它将返回。
池上更喜欢$hashy{$e} || 0
。0
当$hashy{$e}
为空字符串时,它也返回。它可以与较早的perl版本一起使用,而无需//
操作员支持。
恕我直言,在大多数情况下,这是“样式指南”的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句