if-then语句中奇数使用False常量

时间:2015-07-13 20:49:18

标签: perl

Python是我的主要语言,但必须维护一个相当大的传统Perl代码库 我有一个奇怪的逻辑陈述,我无法做出正面或反面。

在顶部,常量定义为:

use constant FALSE => 0;

sub thisFunc {

    FALSE if ($self->{_thisVar} ne "tif");

    ...
    ...
    return statement,etc..
}

因此,我将其视为一种“有点'花哨的,非标准的if-then声明, 如果$ thisVar字符串不等于" tif",则为FALSE。咦? 不是$ that = FALSE,只是 FALSE

此语句的形式多次出现在文件中。 这个代码库正在使用中,多年来一直由非常好的团队审核, 所以我认为这是有效的,有意义。 "使用严格;"设置在最顶层。

有人可以如此善意地解释逻辑的含义。 我已经谷歌,但没有快乐。 提前谢谢,

2 个答案:

答案 0 :(得分:0)

"如果" Perl中的逻辑可以通过几种方式构建:

  • 显而易见的一个:

    <!DOCTYPE html>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
  • 不太明显的一个:

    if ($flag) { do_something() }
    

这个例子说明了如何&#34; FALSE如果&#34; FALSE的确切行为。语句 - 在子例程中为LAST语句时,只发现其含义:

do_something() if ($flag);

上面运行的输出是:

    use strict;

    use constant FALSE => 0;

    sub thisFunc {
        my $arg = shift;
        FALSE if ($arg ne "tif");
    }

    print "return val: ".thisFunc("ble")."\n";
    print "return val: ".thisFunc("tif")."\n";

答案 1 :(得分:0)

毫无意义。我怀疑它是

return FALSE if $self->{_thisVar} ne "tif";

有一种类似的结构并非毫无意义。如果循环条件有副作用,则以下内容并非毫无意义:

1 while some_sub();

又名

while (some_sub()) { }

又名

while (1) {
   some_sub()
      or last;
}

实际例子:

$ perl -E'$_ = "xaabbx"; 1 while s/ab//; say'
xx