`
gift5168xf
  • 浏览: 28976 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

区别Ruby的require,load,和include

    博客分类:
  • ROR
阅读更多

三者之间区别并不像你想的那么难,也不会像有些文章写的那么长。挺简单的。

相同之处:三者均在kernel中定义的,均含有包含进某物之意。

不同之处:

1、requre,load用于文件,如.rb等等结尾的文件。

2、include则用于包含一个文件(.rb等结尾的文件)中的模块。

3、requre一般情况下用于加载库文件,而load则用于加载配置文件。

4、requre加载一次,load可加载多次。

怎么样,简单吧!再看个例子。

如果说abc.rb中包含一个模块Ma,和几个类Ca,Cb等等。那么你若想在ef.rb文件中使用abc.rb中的资源,你得这样:

require 'abc.rb'

若还想在ef.rb的某个类中使用abc.rb中的模块,则应在这个类中加入

include Ma

如果你只想在ef.rb文件的某个类中使用abc.rb的模块,你得这样:

require 'abc.rb'

include Ma

这两句就告诉了你它们区别。

下面部分摘自于:http://anw.stikipad.com/ocean/show/require+load+and+include

Ruby 中 “require”, “load” 和 “include” 有甚麼不同呢? “require” 和 “load” 用途是一致的, 用來載入新的程式庫, “include” 是用來 mix-in 模組.
  • “require” 可載入某個 a.rb 檔案, 且可以省略 ”.rb”. 而且它只會在第一次的時候載入, 若再次 “require” 時就會忽略
    
    require 'a'
    
    a = A.new
    
    
    
  • “load” 和 “require” 一樣但要用 a.rb 全名, 且每次一定會重新載入
    
    load 'a.rb'
    
    a = A.new
    
    
    
  • 載入程式庫的順序呢(類似 java class path)? Ruby 把這個資訊存在 ”$:” 系統全域變數上, 你可以藉著 RUBYLIB 或 ruby -I 來加入新的載入目錄.
    
    puts $:
    
    
    
  • “include” 用來 mix-in 某個模組, 可以減少書寫的長度
    
    require 'webrick'
    include WEBrick
    
    //可以不用 server = WEBrick::HTTPServer.new(...)
    server = HTTPServer.new(...)
    
    
    

分享到:
评论
1 楼 reyesyang 2011-08-15  
文章帮助很大,不过有几处的requre应该是require. 

相关推荐

    Ruby中require、load、include、extend的区别介绍

    ### Ruby中require、load、include、extend的区别介绍 在Ruby编程语言中,为了实现代码的重用和组织,开发者经常需要引入外部文件或模块。在这一过程中,`require`、`load`、`include`、`extend`这几个关键字发挥了...

    08Ruby 模块.docx

    ### Ruby 模块详解 #### 一、Ruby 模块简介 ...通过`require`和`include`语句,可以轻松地在不同文件间共享和重用代码。此外,利用 Mixin 功能,可以实现类似多重继承的效果,使得代码更加灵活和可维护。

    ruby初学者教程(对初学者很有帮助)

    `require`和`load`用于加载外部文件,`include`用于将模块混合到类中。 ```ruby require 'my_module' ``` #### 九、异常 **9.1 异常处理** Ruby使用`begin...rescue...end`块来捕获和处理异常。 ```ruby begin ...

    MongoDB and Ruby

    1. **安装Ruby驱动程序**:首先需要安装MongoDB的Ruby驱动程序,通过命令`gem install mongo`和`gem install bson`进行安装。 2. **选择ODM(对象文档映射)库**:Ruby社区提供了多种ODM库来帮助开发人员更方便地...

    Ruby程序设计.doc

    **8.4 Require, load和include** - **require/load:** 用于加载外部的Ruby文件。 - **include:** 用于将一个模块混合到当前类中。 #### 九、异常 **9.1 异常处理** Ruby提供了try/catch风格的异常处理机制。 ...

    Ruby程序设计(简洁清新的教程)

    `require`和`load`用于加载其他Ruby文件,`include`用于将模块混入到类中。 #### 八、异常 **9.1 异常处理** Ruby使用`begin...rescue...end`结构来捕获和处理异常: ```ruby begin raise "An error occurred....

    ruby语法基础教程

    §8.4 Require, load和include 62 第九章 异常 64 §9.1 异常处理 64 §9.2 定义异常类 68 §9.3 catch和throw 68 第十章 多任务处理 69 §10.1 多线程处理 69 §10.1.1 线程创建 69 §10.1.2 线程操作 70 §10.1.3 ...

    Ruby程序设计高级教程

    - **Require, load和include**:如何加载其他文件或模块。 #### 九、异常 - **异常处理**:try...rescue...else...ensure结构的使用。 - **定义异常类**:如何自定义异常类。 - **catch和throw**:非本地跳转机制...

    RUBY基础入门指南

    **8.4 Require, load和include** - `require`:加载并执行指定文件。 - `load`:加载文件,不会缓存。 - `include`:将模块混入到类中。 #### 九、异常 **9.1 异常处理** 可以使用`begin...rescue...ensure......

    ruby 程序设计

    ##### §8.4 Require, load和include - **require**:加载Ruby文件,只有第一次加载时才执行。 - **load**:加载Ruby文件,每次都会执行。 - **include**:将模块中的方法包含到当前类中。 #### 九、异常 ##### §...

    Ruby入门教程

    **8.4 Require, load和include** - `require`:加载Ruby文件。 - `load`:加载Ruby文件,但不会检查是否已经加载过。 - `include`:用于引入模块。 #### 九、异常 **9.1 异常处理** 异常处理机制可以帮助程序在...

    Ruby经典学习教程(口碑不错)

    **8.4 Require, load和include** - `require`用于加载外部的Ruby文件。 - `load`用于动态加载文件,常用于脚本环境。 - `include`用于将模块包含进类中。 #### 九、异常 **9.1 异常处理** - 使用`begin...rescue...

    ruby的程序结构介绍

    - Ruby提供了`require`和`load`两种方式来包含其他文件。 - `require`:当首次加载某个文件时会将其内容执行一次,之后如果再次`require`同样的文件,则不会重复执行。 - `load`:无论何时调用`load`,都会重新...

    css_parser:Ruby CSS解析器

    在Ruby中加载,解析和级联CSS规则集。 建立 gem install css_parser 用法 require 'css_parser' include CssParser parser = CssParser :: Parser . new parser . load_uri! ( '...

    Ruby的面向对象方式编程学习杂记

    8. **load vs require**:`load`和`require`都用于导入代码,但`load`每次调用都会重新执行文件,而`require`只会加载一次。`load`通常用于开发环境,`require`用于生产环境。 9. **祖先链**:祖先链描述了类或模块...

    x2ch:2ch 下载器和解析器库

    使用这个库,您可以轻松地使用 Ruby 访问 2ch。 安装 gem install x2ch 例子 获取 2ch 类别和板列表。从服务器下载与 gzip 兼容。 require 'x2ch' include X2CH bbs = Bbs.load bbs.each{|category| puts '- ' +...

    structr:使用正则表达式构建纯文本

    将纯文本绑定到 Ruby 类。 灵感来自 ROXML 用法 require 'structr' Load = Struct . new ( :one , :five , :fifteen ) ProcessItem = Struct . new ( :pid , :user ) class Top include Structr converter :...

Global site tag (gtag.js) - Google Analytics