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
一个模块的时候,这个模块的所有方法会变成扩展类
的实例方法
。