Perl 根据定义的两个可能值中的一个指定变量的最佳方法?
如果一个变量已定义,我想为它指定一个值;如果第一个变量未定义,我想为它指定另一个值Perl 根据定义的两个可能值中的一个指定变量的最佳方法?,perl,Perl,如果一个变量已定义,我想为它指定一个值;如果第一个变量未定义,我想为它指定另一个值 在Perl中是否有一种单行方式来实现这一点?或者至少比上面的要简单?在Perl 5.10及更高版本中,您可以使用以下运算符: my $port_string; if (defined($self->{port_range})) { $port_string = $self->{port_range}; } else { $port_string
在Perl中是否有一种单行方式来实现这一点?或者至少比上面的要简单?在Perl 5.10及更高版本中,您可以使用以下运算符:
my $port_string;
if (defined($self->{port_range})) {
$port_string = $self->{port_range};
} else {
$port_string = "whatever2";
}
可以使用条件运算符使此语句更简洁:
my $port_string = $self->{port_range} // "whatever2";
您还可以使用定义的或:
my $port_string = defined $self->{port_range} ? $self->{port_range} :
"whatever2";
或逻辑或:
my $port_string = $self->{port_range} // "whatever2";
定义或可能是最简洁的
注意:正如@ikegami在下面提到的,如果$self->{port\u range}
是0
或”
,则逻辑or案例将进行替换,因为这些值是错误的 我想
my $port_string = $self->{port_range} || "whatever2";
应该很好。@ikegami一个很好的注释,在这种情况下可能还可以。在Perl中它不是三元运算符吗?它是三元运算符。它不是三元运算符。它是条件运算符。
my $port_string = defined $self->port_range
? $self->port_range
: "whatever2";