Ruby高级编程:动态代码与宏的运用
1. Ruby中的Mixin与Monkey Patching
在Ruby开发中,有两种为对象添加功能的重要方法:Mixin和Monkey Patching。
Mixin是Ruby实现多重继承的方式,它允许将代码模块注入到对象中。使用模块和Mixin可以很好地组织大型类文件,将其拆分为多个部分,还能让常用方法只编写一次,却可在多个对象定义中使用。
Monkey Patching则像是对他人代码进行的匿名内联Mixin。它基于 classeval 和 instanceeval 方法,允许在运行时通过向对象发送代码块(或字符串)来修改对象。不过,Monkey Patching虽然可以快速修复问题或试验新功能,但由于存在风险,必须谨慎使用。
例如,假设有一个 Person 类,它可以根据人的名字生成站点标识符:
class Person
def initialize(name)
@name = name
end
def get_site_id
@name.downcase
end
end
yoda = Person.new "Yoda"
p yoda.get_site_id
如果想让这些站点标识符以网站名称为前缀,可以使用Monkey Patching覆盖 get_site_id 方法,同时保留并使用原有的方法:
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



