Ruby中的require、load以及include

require、load以及include关键字都是在kernel中定义的,用来包含外部文件或模块到当期程序中,下面就他们的具体区别进行部分阐述:

1、require:

require多引入外部rb源文件或者外部库(可以省略文件的后缀‘.rb’),require加载外部文件只会加载一次(多次引入会忽略),而load会加载多次

2、load:

load多为加载资源配置文件,因为load可以多次加载(每次都重新加载)(配置文件如***.yml等文件),与require相比,除了会加载多次外,加载时需要添加文件的后缀

3、include:

include多为加载源文件中的模块,实现mix_in;同时include在定义类使用时,可以将模块的方法变为类的实例方法,变量变为当前类的类变量@@xxx;而与之相对的extend关键字会将模块中的方法变为类的类方法

实例演示:

require加载外部库或源文件:

require ‘test_library’(或require 'test_library.rb')

load加载资源配置文件:

load 'language.yml'

include加载模块实例:

[ruby]  view plain  copy
  1. module Test  
  2.     @a = 1  
  3.     def class_type  
  4.         "This class is of type: #{self.class}"  
  5.     end  
  6. end  
  7.   
  8.   
  9. class TestInclude  
  10.     # include Test  
  11.     def self.test_a  
  12.         puts "test @@xxx"  
  13.     end  
  14.     extend Test  
  15. end  
  16.   
  17. # puts TestInclude.class_type  #=> undefined method 'class_type' for TestInclude:Class(NoMethodError)  
  18. # puts TestInclude.new.class_type #=> This class is of type: TestInclude  
  19. puts TestInclude.class_type #=> This class is fo type:Class  
  20. puts TestInclude.new.class_type #=> undefined method 'class_type' for TestInclude(NoMethodError)  

版权声明:开源交流,可以不进行特殊介绍,但请尊重个人劳动成果,互相交流哦!
转自:http://blog.csdn.net/wanglizheng825034277/article/details/52561923
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值