2

ループ内でこれを見つけました。私はスプライスについて読んだことがありますが、それは私をもっと混乱させました. Perl には詳しくありませんが、アルゴリズムを別の言語に翻訳しようとしています。

my $sill = splice(@list,int(rand(@list)),1);
       last unless ($sill);

より具体的に言うと、最後からループを終了しない場合、$sill 内には何が含まれますか?

助けてくれてありがとう!

4

2 に答える 2

4

これにより、配列から 1 つの要素がランダムに削除され@listます。その値は に割り当てられ$sillます。それが偽の値だった場合、囲んでいるループ (表示されていません) が抜け出します。

splice配列、オフセット、長さ、および置換リストを取ります。置換を省略した場合、要素は削除されます。

長さは定数 (1 要素) ですが、オフセットは 0 から の長さの間のランダムな整数として計算され@listます。

于 2013-02-08T13:21:44.800 に答える
2

つまり:

  • 配列からランダムな要素を削除しますlist(0 -> リストの要素の数)。
  • 削除された要素 ( like ) をsill変数に割り当て、pop()
  • sill変数がfalseの場合、ループを終了します

http://perldoc.perl.org/functions/splice.htmlを参照してください。

于 2013-02-08T13:22:03.370 に答える