在循环中找到了这个。我已经阅读了关于 splice 的内容,但它让我更加困惑。我不熟悉 Perl,但正在尝试将算法翻译成另一种语言。
my $sill = splice(@list,int(rand(@list)),1);
last unless ($sill);
更具体地说:如果 $sill 没有从最后一个循环退出,那么里面会是什么?
谢谢你的帮助!
在循环中找到了这个。我已经阅读了关于 splice 的内容,但它让我更加困惑。我不熟悉 Perl,但正在尝试将算法翻译成另一种语言。
my $sill = splice(@list,int(rand(@list)),1);
last unless ($sill);
更具体地说:如果 $sill 没有从最后一个循环退出,那么里面会是什么?
谢谢你的帮助!
这会从数组中随机删除一个元素@list
。该值被分配给$sill
。如果那是一个假值,则封闭循环(未显示)被打破。
splice
接受一个数组、一个偏移量和一个长度,以及一个替换列表。如果省略替换,则删除元素。
长度是常数(1 个元素),但偏移量计算为介于 0 和 长度之间的随机整数@list
。
这意味着:
list
(0 -> 列表元素的数量)和sill
用删除的元素(pop()
like)分配变量和sill
如果变量为假则退出循环