在 Ruby 中动态添加(预定义)实例方法
我了解了如何使用 def [instance].[methodname]; 动态地将方法添加到 Ruby 中的实例。 [...];结束
。
但是,我有兴趣将另一个位置中存在的方法附加到给定实例。例如,
def my_meth
puts self.foo
end
class MyCls
attr_accessor :foo
end
my_obj = MyCls.new
my_obj.my_meth
我如何简单地将 my_meth
附加到 my_obj
以便上述代码最后一行中的方法调用能够工作?
I see how to dynamically add a method to an instance in Ruby with def [instance].[methodname]; [...]; end
.
However, I'm interested in attaching a method that exists in another location to a given instance. e.g.
def my_meth
puts self.foo
end
class MyCls
attr_accessor :foo
end
my_obj = MyCls.new
my_obj.my_meth
How could I simply attach my_meth
to my_obj
so that the method call in the final line of the foregoing code would work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
include
或extend
将模块添加到您的类中,例如。extend
:除非您需要像这样动态混合模块,否则通常最好
include
您的模块,如下所示:You could use
include
orextend
to add a module to your class, eg.extend
:Unless you have a need to mix-in a module on the fly like this it's generally better to
include
your module like so: