gpt4 book ai didi

Ruby:当我在同一个数组上迭代时删除数组的元素会发生什么?

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:10 25 4
gpt4 key购买 nike

我正在使用 for 遍历数组,当满足特定条件时,我需要从数组中删除当前元素。这是安全的操作吗?

for arrayElement in array1 do
if (arrayElement < min) then
array1.delete(arrayElement)
end
end

或者,我是否应该修改我的代码以在 for block 之外执行删除?

最佳答案

不安全。迭代时不要更改底层容器。这可能会导致意外行为。

例如,下面的代码会导致死循环:

a = [1]
a.each { a.push 1 }

您的代码可以使用 Array#delete_if 编写:

array1 = [5, 4, 3, 1, 2, 7, 8]
min = 4
array1.delete_if { |arrayElement|
arrayElement < min
}
array # => [5, 4, 7, 8]

关于Ruby:当我在同一个数组上迭代时删除数组的元素会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com