ループ内でこれを見つけました。私はスプライスについて読んだことがありますが、それは私をもっと混乱させました. Perl には詳しくありませんが、アルゴリズムを別の言語に翻訳しようとしています。
my $sill = splice(@list,int(rand(@list)),1);
last unless ($sill);
より具体的に言うと、最後からループを終了しない場合、$sill 内には何が含まれますか?
助けてくれてありがとう!
ループ内でこれを見つけました。私はスプライスについて読んだことがありますが、それは私をもっと混乱させました. Perl には詳しくありませんが、アルゴリズムを別の言語に翻訳しようとしています。
my $sill = splice(@list,int(rand(@list)),1);
last unless ($sill);
より具体的に言うと、最後からループを終了しない場合、$sill 内には何が含まれますか?
助けてくれてありがとう!
これにより、配列から 1 つの要素がランダムに削除され@list
ます。その値は に割り当てられ$sill
ます。それが偽の値だった場合、囲んでいるループ (表示されていません) が抜け出します。
splice
配列、オフセット、長さ、および置換リストを取ります。置換を省略した場合、要素は削除されます。
長さは定数 (1 要素) ですが、オフセットは 0 から の長さの間のランダムな整数として計算され@list
ます。
つまり:
list
(0 -> リストの要素の数)。sill
変数に割り当て、pop()
sill
変数がfalseの場合、ループを終了します