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

时间:2011-10-05 17:53:41

标签: ruby self

我想编写一些改变调用对象的新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

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

谢谢!

2 个答案:

答案 0 :(得分:7)

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

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

foo = [1,2,3,4]

foo.stuff!

p foo #=> ['a',2,3,4]

答案 1 :(得分:1)

def stuff!
  self.something = 'something else'
end

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