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

wul*_*one 6 ruby self

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

a = [1,2,3,4]
a.map!{|e| e+1}
a = [2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

......但是我在说明如何做到这一点.我想我需要一个新的大脑.

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

class Array
  def stuff!
    # change the calling object in some way
  end
end
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Gaz*_*ler 7

编辑 - 更新了答案以反映您的问题的更改.

class Array
  def stuff!
        self[0] = "a"
  end
end

foo = [1,2,3,4]

foo.stuff!

p foo #=> ['a',2,3,4]
Run Code Online (Sandbox Code Playgroud)