一些爆炸版本Array的方法是像compact!,reject!,flatten!,uniq!回报率nil,如果没有改变:
[1,[2]].flatten!
# => [1, 2]
[1,2].flatten!
# => nil
[1,[2]].flatten
# => [1, 2]
[1,2].flatten
# => [1, 2]
[1,2,nil].compact!
# => [1, 2]
[1,2].compact!
# => nil
[1,2,nil].compact
# => [1, 2]
[1,2].compact
# => [1, 2]
Run Code Online (Sandbox Code Playgroud)
如果他们这样做,就必须有理由.任何想法可能是什么?
Dav*_*tte 18
bang(!)方法会修改当前对象,但nil如果每个文档没有受影响的元素,它们会返回.如果您出于某种原因需要执行某些操作(如果您修改了相关数组),这将非常有用.
if array.flatten!
puts "Oh yeah... flattened that array!"
end
Run Code Online (Sandbox Code Playgroud)