一行条件布尔 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;

会好很多。