my $port_string;
if (defined($self->{port_range})) {
$port_string = $self->{port_range};
} else {
$port_string = "whatever2";
}
如果定义了一个值,我想分配一个变量值,如果第一个值是undef,我想分配另一个值。
在Perl中有一种单行方式吗?或者至少比我在那里更简单?
答案 0 :(得分:8)
在Perl 5.10及更高版本中,您可以使用defined-or运算符:
my $port_string = $self->{port_range} // "whatever2";
答案 1 :(得分:8)
您可以使用条件运算符使此语句更简洁:
my $port_string = defined $self->{port_range} ? $self->{port_range} :
"whatever2";
您也可以使用defined-或:
my $port_string = $self->{port_range} // "whatever2";
或逻辑 - 或:
my $port_string = $self->{port_range} || "whatever2";
已定义 - 或者可能是最简洁。
注意:正如@ikegami在下面提到的那样,如果$self->{port_range}
为0
或""
,则逻辑或案例将进行替换,因为这些值为 falsy 。
答案 2 :(得分:1)
我认为
my $port_string = defined $self->port_range
? $self->port_range
: "whatever2";
应该是好的。