如何消除$e->{aa}{$_}
下面表达式中的重复项?
my $e = {aa=>{aa=>1,bb=>2,c=>undef}};
my $s = " ". (defined $e->{aa}{$_} ? $e->{aa}{$_} :'null') ." ";
如何消除$e->{aa}{$_}
下面表达式中的重复项?
my $e = {aa=>{aa=>1,bb=>2,c=>undef}};
my $s = " ". (defined $e->{aa}{$_} ? $e->{aa}{$_} :'null') ." ";
从 v5.10 开始,您可以使用defined-or 运算符//
来测试定义性而不是真实性,就像这样||
做一样。然后:
my $s = ($e->{aa}{$_} // 'null') . ' ';
如果由于某种原因您卡在 5.10 之前的版本上,您可以使用do
块:
my $s = do { my $x = $e->{aa}{$_}; defined $x ? "$x" : 'null';};
引入运算符是因为(//
您可能知道)
my $s = $e->{aa}{$_} || 'null'
$s
即使定义了哈希条目但具有像 0 或“”这样的错误值,也会设置为“null”。