比如说有两个类 A 的实例 a1, a2:
a1 = A.new
a2 = A.new
此时要为 a1, a2 都添加一个方法 m, 该怎么办呢? 除了下面这两种方法:
class A
def m
end
end
A.class_eval do
def m
end
end
#6 楼 @Alexander 不论是不是自己定义的,打开类添个方法不就得了(猴子补丁),这就和你写的第一种方法一样。 还是怕和类中已存在的方法名冲突?
可以用 Module, 名字冲突建议用 alias chain
module AExt
def m
end
end
# for all A's instance
A.send :include AExt
# only for a1 and a2
a1.extend AExt
a2.extend AExt