Ruby的"每个"方法不会遍历数组中的所有项目?

O.F*_*.F. 6 ruby each loops

我正在尝试以下代码:

a = [1,2,3,4]  
a.each do  
  puts "Removing #{a.last}"  
  a.pop  
end
Run Code Online (Sandbox Code Playgroud)

但是没有弹出所有四个数字我只得到第一个3.确实,做一些像放置a.length的东西返回1并且放置它显示元素"1"仍然存在.

我该如何正确使用该方法?(我使用的是Ruby 2.0).

mcf*_*gan 6

我怀疑这种情况正在发生,因为您在修改列表时迭代列表的元素.

请尝试以下方法:

a = [1,2,3,4]
until a.empty? do
  puts "Removing #{a.last}"
  a.pop
end
Run Code Online (Sandbox Code Playgroud)