小编she*_*ept的帖子

"delete_at"方法仅删除偶数数组元素

为什么这段代码只删除数组中的元素?我希望for循环遍历每个值0到3,并一次删除一个元素.但它只删除了[0]和[2].我究竟做错了什么?提前致谢 -

a=%w(ant bat cat dog)
puts a.inspect #output: ["ant", "bat", "cat", "dog"]

for k in (0..3)
    a.delete_at(k)
end

puts a.inspect #output: ["bat", "dog"]
Run Code Online (Sandbox Code Playgroud)

UPDATE--

谢谢您的反馈; 我明白我现在在做什么.为了删除数组的每个元素,Array方法'shift'是合适的.例如:

for each in (0..3)
    a.shift
    print a
end
Run Code Online (Sandbox Code Playgroud)

这会将第一个元素移出数组,并将每个后续元素向前移动一个单元格.感谢您推荐使用'each' - 我可以看到它是首选语法.

更新2--

以下代码部分是否更能代表正确的ruby语法?

(0..3).to_a.each do
    a.shift
    p a
end
Run Code Online (Sandbox Code Playgroud)

感谢Glenn关于删除数组内容的建议.

ruby arrays

3
推荐指数
2
解决办法
1098
查看次数

标签 统计

arrays ×1

ruby ×1