3

そのため、コンパイラが本当に気に入らないコードを少し処理しています。同じ数のインデックスを持つ 2 つの配列があります。@arrayに が入力され0@otherarray順番に入力されます。この foreach ループでは、最初の値はループの外で埋められるため、スキップされます。Count は、ループの外でも 1 として宣言されます。

foreach (@array) {
    if ($count == 1) {
    } elsif($_ == 0 && @otherarray[$count-1] != undef) {
        $_ = $count;
        splice(@otherarray, @otherarray[$count - 1], 1);
    } else {
        $_ = $otherarray[ rand @otherarray ];
    }
$count++
}

この行の数値 ne(!=) で初期化されていない値を使用していること、および他の配列が else/if/elsif ステートメント内にあるすべての行を使用していることを主張します。

elsif($_ == 0 && @otherarray[$count-1] != undef) 

これを回避するにはどうすればよいですか? 当然のことだと思いますが、私は Perl を初めて使用するので、そもそも設定が間違っているのではないでしょうか? 私はすでに自分の@otherarray.

4

1 に答える 1

4

初期化されundefていない比較です。definedと比較する代わりに使用undef:

elsif($_ == 0 && defined($otherarray[$count-1]))
于 2013-09-25T13:11:18.130 に答える