Arrays perl,从for循环中的数组中删除元素
下面的代码是否总是在perl中工作Arrays perl,从for循环中的数组中删除元素,arrays,perl,iteration,data-manipulation,Arrays,Perl,Iteration,Data Manipulation,下面的代码是否总是在perl中工作 for loop iterating over @array { # do something if ($condition) { remove current element from @array } } 因为我知道在Java中这会导致一些异常,所以上面的代码目前对我来说是有效的,但我想确保它在perl中适用于所有情况。谢谢嗯,报纸上说: 若列表的任何部分是数组,若您 在回路主体内添加或删除图元,例如使用接头。 所以不要那样做 使用
for loop iterating over @array {
# do something
if ($condition) {
remove current element from @array
}
}
因为我知道在Java中这会导致一些异常,所以上面的代码目前对我来说是有效的,但我想确保它在perl中适用于所有情况。谢谢嗯,报纸上说:
若列表的任何部分是数组,若您
在回路主体内添加或删除图元,例如使用接头。
所以不要那样做
使用以下选项会更好:
如果在对哈希进行迭代时添加或删除哈希的元素,
条目可能被跳过或复制,所以不要这样做。例外情况:在
在当前的实现中,删除项目总是安全的
最近由each()返回,因此以下代码正常工作:
但我认为最好的选择是使用:
是的,文档说不要在foreach循环中删除/添加元素,但是C样式的for循环:for呢(my$i=0;$iAh,这是另一个故事。这应该是安全的,因为每次
for
检查退出条件时,您基本上只需计算数组的长度。请注意,grep
示例的最后一行应该被更改,以删除return
。内联子对象的最后一行被用作确定退出条件的条件。)不知道是否应该包括它。(return
给出语法错误)
while (($key, $value) = each %hash) {
print $key, "\n";
delete $hash{$key}; # This is safe
}
@some_array = grep {
# do something with $_
some_condition($_);
} @some_array;