本文首发于: 三人行RubyOnRails话吧 , 转帖请注明出处.
直接进入正题,大家猜想一下,下面这段代码会出现什么结果?
arr =[11,22,33,44,55]
arr.each do |a|
p a
arr.delete(a)
end return arr
您可以预期的结果是:
11
22
33
44
55
实际结果是:
11
33
55
有点出乎意料是不是?具体原因去看看Ruby的source哦。。。
如果想要达到类似的效果您可以使用以下的代码
方法一:
arr =[11,22,33,44,55]
j =0
0.upto(arr.size-1) do |i|
a = arr[i-j]
p a
arr.delete(a)
j += 1
end
return arr
方法二:
arr =[11,22,33,44,55]
brr=arr.clone
brr.each do |a|
p a
x = x+1
arr.delete(a)
end
return arr
本文首发于: 三人行RubyOnRails话吧 , 转帖请注明出处.