Module的include和extend的区别
在ruby中我们经常用Module来扩展类的功能,我们常常看到这样的代码:1
2
3
4
5
6
7
8
9
10module Sayable
def say
puts "hello"
end
end
class People
extend Sayable
include Sayable
end
我们看到我们在这里分别使用了extend和include,那么extend和include有什么区别呢?我们接下来实验一下:
我们先定义一个module,然后定义两个类分别使用extend和include,然后看看这个两个类的扩展有啥区别。
1 | module Testable |
看到上面的实验结果我们知道当我们extend一个模块的时候,这个模块的所有方法会变成扩展类的类方法,而当我们include一个模块的时候,这个模块的所有方法会变成扩展类的实例方法。