是否有可能将命名空间方法添加到Ruby中的现有类中?

时间:2011-07-24 23:14:06

标签: ruby

我正在编写一些代码,我想在预定义的类中添加一些方法,如下所示:

class Model  # this class already exists

  def my_method
    # code here
  end

end

有没有办法命名这个,使用模块或其他?

2 个答案:

答案 0 :(得分:3)

在Ruby 2.0中将有一种机制可以做到这一点,尽管尚不清楚该机制到底是什么。在过去近10年中,领跑者似乎是选择器命名空间,但最近 Classboxes ,甚至最近, Refinements 也起了带头作用。事实上,如果我没有弄错的话,实际上目前在YARV主干中实现了优化。

然而,对于所有当前存在的版本(包括即将发布的版本1.9.3),没有办法做到这一点。

这就是为什么一般应该避免猴子补丁的原因之一。

答案 1 :(得分:1)

只需在Module内写下您的方法,并将其包含在Model

module SomeModule
  def my_method
  end
end

class Model
  include SomeModule
end