0

宣言された変数が 2 つあります。両方が存在する (TRUE である) 場合は同時に評価したいと思います。

my @array = (1,2);
my $scalar = 0;

if (@array && $scalar){
  print "success\n";
}

&&動作しません。別の演算子がありますか、それとも 2 つの if-state を作成する必要がありますか?
印刷されると思っていましたsuccess

4

3 に答える 3

3

動作しないコードは、投稿したコードではありません。

perl -E 'my @array = (1,2); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
True!

perl -E 'my @array = (); my $scalar = 1; if (@array && $scalar) { say "True!" } else { say "False" }'
False

編集: kmxillo のコメントに対応するその他の例:

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && $scalar) { say "True!" } else { say "False" }'
False

perl -E 'my @array = (1,2); my $scalar = 0; if (@array && defined $scalar) { say "True!" } else { say "False" }'
True!

undef数値 0 は ( 、空の文字列、空の配列、および文字列 "0"とともに) 偽の値と見なされるため、$scalar0 に設定すると@array && $scalar偽になります。が 0のときに true を維持するには、代わり$scalarにテストdefined $scalarします。

于 2013-05-16T13:57:07.847 に答える
-1

これを試して

  my @array = (1,2);
  my $scalar = 0;

  if (scalar @array && defined $scalar){
     print "success\n";
  }
于 2013-05-17T13:20:44.690 に答える