ruby的require include 区别
一直以来感觉require和include总是name的难以理解,趁着今天有时间好好的理顺了一番
ruby中在一个model中不可以引用另外一个model,我们可以通过使用require,引入一个新
的model,然后通过操作这个model的其他方法实现我们想要实现的东西。对于include其实我
感觉有点继承的味道,一般要先把某个类引入进来,也就是说require 'xxoo.rb'然后在
include Module1,注意include后面一定是不能带引号的.对于include进来的Module,我们可以
直接使用其方法
include将命名空间(模块)的功能添加到当前空间中,extend方法将模块的函数添加到当前对象中。使用include,可以将模块的方法作为实例方法使用,使用extend时,则可以作为类方法使用。
require "module1.rb"
extend Module1
class Test
end
p Test.test111
为什么访问Test.test111找不到方法呢?原因就是使用extend的时候把模块的函数添加到了当前对象main中,而不是当前对象Test中。
require "module1.rb"
include Module1
class Test
end
p Test.test111或者p Test.new.test111
可以访问,原因就是include将函数的功能添加到当前空间中,而不是仅仅某些对象上。
注意两点:
1.require Module Module的名字一定不能加引号
2.extend是把模块的函数添加到当前对象中的。