以下代码将始终在 perl 中工作吗?
for loop iterating over @array {
# do something
if ($condition) {
remove current element from @array
}
}
因为我知道在 Java 中这会导致一些异常,所以上面的代码现在对我有用,但我想确保它适用于 perl 中的所有情况。谢谢
以下代码将始终在 perl 中工作吗?
for loop iterating over @array {
# do something
if ($condition) {
remove current element from @array
}
}
因为我知道在 Java 中这会导致一些异常,所以上面的代码现在对我有用,但我想确保它适用于 perl 中的所有情况。谢谢
好吧,文档中说:
如果 LIST 的任何部分是一个数组,如果你在循环体中添加或删除元素,foreach 将变得非常混乱,例如使用 splice。所以不要那样做。
每个都好一点:
如果您在迭代散列时添加或删除它的元素,条目可能会被跳过或重复——所以不要这样做。例外:在当前实现中,删除 each() 最近返回的项目总是安全的,因此以下代码可以正常工作:
while (($key, $value) = each %hash) {
print $key, "\n";
delete $hash{$key}; # This is safe
}
但我想这里最好的选择就是使用grep:
@some_array = grep {
# do something with $_
some_condition($_);
} @some_array;