Ruby:如何编写一个bang方法,比如map?

我想编写一些改变调用对象的新Array方法,如下所示:

a = [1,2,3,4] a.map!{|e| e+1} a = [2,3,4,5] 

……但是我知道如何做到这一点。 我想我需要一个新的大脑。

所以,我想要这样的事情:

 class Array def stuff! # change the calling object in some way end end 

地图! 只是一个例子,我想写一个完全新鲜的,而不使用任何预先存在的! 方法。

谢谢!

编辑 – 更新了答案以反映您的问题的更改。

 class Array def stuff! self[0] = "a" end end foo = [1,2,3,4] foo.stuff! p foo #=> ['a',2,3,4] 
 def stuff! self.something = 'something else' end 

bam,你已经修改了底层对象而没有返回一个新对象