(在https://v2ex.com/t/646674里得到启发)
对数组内的不同元素执行相同的操作,我用到了
方法一:array.delete(x)
方法二:array.reject!{|y| y == x}
方法三:array = array.reject{|y| y == x}
出现了一些奇怪的结果,直接看代码。有人能解释一下是怎么回事吗?
names = %w(王八 王九 李大 李二 赵四)
puts names.inspect
names.each do |x|
case x[0]
when '王', '李'
# names.delete(x) # 这样变成[王九, 李二, 赵四]
names.reject!{|y| y == x} # 这样变成[王九, 李二, 赵四]
# names = names.reject{|y| y == x} # 这样变成[赵四]
end
end
puts RUBY_VERSION
puts names.inspect
numbers = (1 .. 5).to_a
numbers.each do |x|
if x.even?
numbers.delete(x) # 这样变成[1,3,5]
# numbers.reject!{|y| y == x} # 这样变成[1,3,5]
# numbers = numbers.reject{|y| y == x} # 这样变成[1,3,5]
end
end
puts numbers.inspect