加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – “delete_at”方法仅删除偶数数组元素

发布时间:2020-12-17 01:48:50 所属栏目:百科 来源:网络整理
导读:为什么这段代码只删除数组中的元素?我希望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)endputs
为什么这段代码只删除数组中的元素?我希望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"]

UPDATE–

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

for each in (0..3)
    a.shift
    print a
end

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

更新2–

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

(0..3).to_a.each do
    a.shift
    p a
end

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

解决方法

因为当你删除元素0时,元素1将是原始数组的元素2.

Initially:
[ant,bat,cat,dog]

a.delete_at[0] => ant
[bat,dog]

go to next element -> 1

a.delete_at[1] => cat
[bat,dog]

go to next element -> 2
a.delete_at[2] => nil (out of range)

go to next element -> 3
a.delete_at[3] => nil

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读