我正在编写一些代码,我想在预定义的类中添加一些方法,如下所示:
class Model # this class already exists
def my_method
# code here
end
end
有没有办法命名这个,使用模块或其他?
答案 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