在我的代码中,我经常写这样的东西:
my $a = defined $scalar ? $scalar : $default_value;
Run Code Online (Sandbox Code Playgroud)
要么
my $b = exists $hash{$_} ? $hash{$_} : $default_value;
Run Code Online (Sandbox Code Playgroud)
有时哈希很深,代码不是很易读.是否有更简洁的方法来完成上述任务?
And*_*ter 12
假设您使用的是Perl 5.10及更高版本,则可以使用该//运算符.
my $a = defined $x ? $x : $default;  # clunky way
my $a = $x // $default;              # nice way
Run Code Online (Sandbox Code Playgroud)
同样你也可以
my $b = defined $hash{$_} ? $hash{$_} : $default;  # clunky
my $b = $hash{$_} // $default;                     # nice
Run Code Online (Sandbox Code Playgroud)
请注意,在我上面的例子中,我正在检查defined $hash{$_},而不是exists $hash{$_}像你一样.没有像定义那样存在的简写.
最后,你有//=操作员,所以你可以做;
$a = $x unless defined $a;  # clunky
$a //= $x;                  # nice
Run Code Online (Sandbox Code Playgroud)
这类似于||=为真理做同样的事情:
$a = $x unless $x;  # Checks for truth, not definedness.
$a ||= $x;
Run Code Online (Sandbox Code Playgroud)