if($ n)在下面的代码中做什么?

时间:2018-10-21 07:37:25

标签: perl

所以我是Perl的新手。我知道下面的代码假设是要生成完整的二叉树。但是if($ n)是什么意思。它是否检查变量$ n是否为空?

sub tree {
  my ($n) = @_;
  my @result = ();
  if ( $n ) {
    for $right_count ( 0 .. $n-1 ) {
      for $right ( tree( $right_count ) ) {
        for $left ( tree( ($n-1) - $right_count ) ) {
          push @result, "1$left$right";
        }
      }
    }
  }
  else {
    push @result, "0";
  }
  return @result;
}
foreach $tree ( tree($_) ) {
  print $tree;
}

1 个答案:

答案 0 :(得分:0)

代码if ($n) 几乎检查$ n是否为空。

在Perl中,没有“空”的概念。变量是否为defined。您可以使用if (defined($n))进行检查。

if ($n)确实检查$n是否是 truthy 。确切的详细信息记录在perlsyn页中。

请注意,许多编程语言(例如C,JavaScript,PHP,Python,Ruby)都存在类似的规则。这些语言都定义了他们认为“真实的”的东西,但彼此不同意。