爲什麼此代碼只刪除數組中的偶數元素?我希望for循環遍歷每個值0到3,並且每次刪除一個元素。但它只是刪除了[0]和[2]。我究竟做錯了什麼?謝謝advance--「delete_at」方法只刪除偶數組元素
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'的建議 - 我可以看到它是首選的語法。
UPDATE 2--
請問下面的代碼段是比較有代表性的正確的Ruby語法的?
(0..3).to_a.each do
a.shift
p a
end
感謝Glenn提供的有關刪除數組內容的建議。
您的更新代碼不是用Ruby方式編寫的。 `each`是一個數組的迭代器,如`[1,2,3] .each {| n | p'},而不是`for`循環的變量。 – 2010-12-23 03:59:57