在我的代码中,我经常写这样的东西:
my $a = defined $scalar ? $scalar : $default_value;
或
my $b = exists $hash{$_} ? $hash{$_} : $default_value;
有时哈希很深,而且代码不是很易读。是否有更简洁的方法来完成上述任务?
答案 0 :(得分:12)
假设您使用的是Perl 5.10及更高版本,则可以使用//
运算符。
my $a = defined $x ? $x : $default; # clunky way
my $a = $x // $default; # nice way
同样你可以做到
my $b = defined $hash{$_} ? $hash{$_} : $default; # clunky
my $b = $hash{$_} // $default; # nice
请注意,在上面的示例中,我正在检查defined $hash{$_}
,而不是exists $hash{$_}
。没有像定义那样存在的简写。
最后,你有//=
运算符,所以你可以这样做;
$a = $x unless defined $a; # clunky
$a //= $x; # nice
这类似于||=
,它对真理做同样的事情:
$a = $x unless $x; # Checks for truth, not definedness.
$a ||= $x;