我有时会访问这样的哈希:
if(exists $ids{$name}){
$id = $ids{$name};
}
这是好的做法吗?我有点担心它包含两次查找,而实际上应该完成一次查找。有没有更好的方法来检查是否存在并赋值?
通过检查exists
,你可以阻止自动生存。看Autovivification:它是什么以及为什么我关心? http://www.perlarchive.com/___TLC/7026.shtml.
UPDATE: As trendels https://stackoverflow.com/users/119341/trendels下面指出,自动生存在您发布的示例中没有发挥作用。我假设实际代码涉及多级哈希。
这是一个例子:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my (%hash, $x);
if ( exists $hash{test}->{vivify} ) {
$x = $hash{test}->{vivify}->{now};
}
print Dumper \%hash;
$x = $hash{test}->{vivify}->{now};
print Dumper \%hash;
__END__
C:\Temp> t
$VAR1 = {
'test' => {}
};
$VAR1 = {
'test' => {
'vivify' => {}
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)