0

如何消除$e->{aa}{$_}下面表达式中的重复项?

my $e = {aa=>{aa=>1,bb=>2,c=>undef}};
my $s = " ". (defined $e->{aa}{$_} ? $e->{aa}{$_} :'null') ." ";
4

2 回答 2

5

从 v5.10 开始,您可以使用defined-or 运算符//来测试定义性而不是真实性,就像这样||做一样。然后:

my $s = ($e->{aa}{$_} // 'null') . ' ';
于 2013-09-12T13:32:41.113 回答
0

如果由于某种原因您卡在 5.10 之前的版本上,您可以使用do块:

my $s = do { my $x = $e->{aa}{$_}; defined $x ? "$x" : 'null';};

引入运算符是因为(//您可能知道)

my $s = $e->{aa}{$_} || 'null'

$s即使定义了哈希条目但具有像 0 或“”这样的错误值,也会设置为“null”。

于 2013-09-12T15:03:53.253 回答