在 Perl 中使用三元条件运算符有更短的方法吗?
Is there a shorter way of using the ternary conditional operator in Perl?
如果可能的话,我想在一行中完成以下作业,而且不要太长:
my $variable = defined($self->{_some_thing_stored_here}) ? $self->{_some_thing_stored_here} : new some_function(@with_some_parameters);
是否有可能以某种类似于在“$_”循环中获取变量的方式来获取 if 条件的参数,使其看起来像这样:
my $variable = defined($self->{_some_thing_stored_here}) ? $_ : new some_function(@with_some_parameters);
PD:我知道可以将条件放在变量中,但我想知道是否可以缩短它。
my $variable = $self->{_some_thing_stored_here} // some_function(@with_some_parameters);
需要 Perl 5.10+。
您也可以 (ab) 使用 postfix foreach 来利用 $_
当定义的检查不是您所需要的时,虽然它不是最常见的习惯用法,但您应该采用注意不要使用后缀语句修饰符声明变量,并且不要调用任何会修改 now-aliased 全局 $_
.
的内容
my $variable;
$variable = check($_) ? $_ : something_else() for $self->{_some_thing_stored_here};
# make sure something_else does not clobber $_
# that would also clobber $self->{_some_thing_stored_here} !
如果可能的话,我想在一行中完成以下作业,而且不要太长:
my $variable = defined($self->{_some_thing_stored_here}) ? $self->{_some_thing_stored_here} : new some_function(@with_some_parameters);
是否有可能以某种类似于在“$_”循环中获取变量的方式来获取 if 条件的参数,使其看起来像这样:
my $variable = defined($self->{_some_thing_stored_here}) ? $_ : new some_function(@with_some_parameters);
PD:我知道可以将条件放在变量中,但我想知道是否可以缩短它。
my $variable = $self->{_some_thing_stored_here} // some_function(@with_some_parameters);
需要 Perl 5.10+。
您也可以 (ab) 使用 postfix foreach 来利用 $_
当定义的检查不是您所需要的时,虽然它不是最常见的习惯用法,但您应该采用注意不要使用后缀语句修饰符声明变量,并且不要调用任何会修改 now-aliased 全局 $_
.
my $variable;
$variable = check($_) ? $_ : something_else() for $self->{_some_thing_stored_here};
# make sure something_else does not clobber $_
# that would also clobber $self->{_some_thing_stored_here} !