Fra*_*ank 5 lookup perl hash performance exists
我有时会访问这样的哈希:
if(exists $ids{$name}){
$id = $ids{$name};
}
Run Code Online (Sandbox Code Playgroud)
那是好习惯吗?我有点担心它包含两个查找,其中一个应该完成.有没有更好的方法来检查存在并分配值?
Sin*_*nür 10
通过检查exists,您可以防止自动更新.请参阅Autovivification:它是什么以及我为什么关心?.
更新:正如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' => {}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |