一行条件布尔 return 语句
One line conditional boolean return statement
最近我来到这个 Perl 代码段:
if($foo eq "foo") {
return 1;
}
my $bar = GetBar();
return ($bar eq "bar")
如果 $foo
的值曾经等于 foo
,它将立即 return 为真,而无需调用 GetBar
。假设这只会在语句 $foo eq "foo"
为真时发生,难道没有一个单行条件布尔 return 语句看起来像:
return only if $foo eq "foo";
含义:仅当 $foo eq "foo"
为真时 Return $foo eq "foo"
的值。
我很好奇在任何编码语言中是否有这样的声明。
可能类似于三元运算符(在 python 中)。
return True if foo == 'foo' else bar == 'bar'
在 Perl 中,您不能 return 比较 return 如果所述值是真值,但是
if ($foo eq 'foo') { return 1; }
可以写成
return 1 if $foo eq 'foo';
与流程控制语句一样,语句修饰符记录在 perlsyn。
顺便说一下,您发布的全部代码可以简化为以下内容:
return $foo eq 'foo' || GetBar() eq 'bar';
你说 "Return value of $foo eq "foo" 仅当 $foo eq "foo" 为真时。"
你可以简单地通过
return 1 if $foo eq 'foo';
如果 eq
没有超载并且 1 是唯一可能的真值。
如果它过载并且可能 return 不是 false 或 1,你可以这样做:
$_ and return $_ for $foo eq 'foo';
但前提是您的目标是尝试生成错误代码。
my $foofoo = $foo eq 'foo';
return $foofoo if $foofoo;
会好很多。
最近我来到这个 Perl 代码段:
if($foo eq "foo") {
return 1;
}
my $bar = GetBar();
return ($bar eq "bar")
如果 $foo
的值曾经等于 foo
,它将立即 return 为真,而无需调用 GetBar
。假设这只会在语句 $foo eq "foo"
为真时发生,难道没有一个单行条件布尔 return 语句看起来像:
return only if $foo eq "foo";
含义:仅当 $foo eq "foo"
为真时 Return $foo eq "foo"
的值。
我很好奇在任何编码语言中是否有这样的声明。
可能类似于三元运算符(在 python 中)。
return True if foo == 'foo' else bar == 'bar'
在 Perl 中,您不能 return 比较 return 如果所述值是真值,但是
if ($foo eq 'foo') { return 1; }
可以写成
return 1 if $foo eq 'foo';
与流程控制语句一样,语句修饰符记录在 perlsyn。
顺便说一下,您发布的全部代码可以简化为以下内容:
return $foo eq 'foo' || GetBar() eq 'bar';
你说 "Return value of $foo eq "foo" 仅当 $foo eq "foo" 为真时。"
你可以简单地通过
return 1 if $foo eq 'foo';
如果 eq
没有超载并且 1 是唯一可能的真值。
如果它过载并且可能 return 不是 false 或 1,你可以这样做:
$_ and return $_ for $foo eq 'foo';
但前提是您的目标是尝试生成错误代码。
my $foofoo = $foo eq 'foo';
return $foofoo if $foofoo;
会好很多。