`
dongsx
  • 浏览: 7038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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是把模块的函数添加到当前对象中的。
分享到:
评论

相关推荐

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

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

    Ruby-Emojiemoji的Rubygem

    Ruby-Emoji,也被称为`emoji`,是一款在Ruby编程语言中的Gem(库),它使得开发者能够在他们的代码中方便地使用和处理表情符号(emoji)。这个Gem是Ruby开发中用于管理和操作Web资源,特别是与文本相关的应用程序,...

    MongoDB and Ruby

    ### MongoDB与Ruby:深入探索文档型数据库及其在Ruby中的应用 #### 一、MongoDB简介 MongoDB是一款基于分布式文件存储的开源文档型数据库系统,它由C++编写而成,适用于处理大规模数据集。MongoDB的设计哲学是为了...

    开放Ruby+watir 自动化测试工具介绍+安装说明

    Ruby和Watir(Web Application Testing in Ruby)是一个强大的自动化测试框架,主要用于Web应用程序的测试。Ruby是一种面向对象的、动态的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者的喜爱。...

    08Ruby 模块.docx

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

    Ruby-Money一个Ruby库来处理货币和货币转换

    Ruby-Money库是一个专门为Ruby编程语言设计的强大工具,它专注于处理货币相关的运算和货币转换。这个库被广泛用于需要精确管理货币数据的应用程序,比如电子商务、财务系统或者任何涉及金融交易的项目。在Ruby社区中...

    Ruby-elasticsearchrubyRuby集成Elasticsearch

    require 'elasticsearch' client = Elasticsearch::Client.new hosts: ['http://localhost:9200'] ``` **3. 使用Elasticsearch-model** 如果你的Ruby对象需要映射到Elasticsearch索引,可以使用`elasticsearch-...

    Ruby读取INI文件

    elsif line.include?('=') key, value = line.split('=', 2).map(&:strip) # 分割键值对 @data[section][key] = value end end end def [](section) @data[section] end end # 使用示例 reader = ...

    Ruby-PyCall从Ruby语言调用Python函数

    Ruby-PyCall是一个非常有用的库,它允许Ruby程序员无缝地调用Python的函数和模块,极大地扩展了Ruby的生态系统。这个库使得两个语言之间的交互变得简单而高效,特别是在需要利用Python的强大科学计算或数据处理能力...

    ruby程序:ruby selenium Web驱动程序

    Ruby Selenium Web驱动程序是用于自动化Web浏览器操作的强大工具,它允许开发者使用Ruby语言编写脚本来控制浏览器的行为。这个工具主要用于Web应用的测试,但也可以用于其他需要浏览器交互的场景。在Ruby中,...

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

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

    Ruby-httparty让http有趣

    require 'httparty' class MyApiClient include HTTParty base_uri 'https://api.example.com' def get_user(id) response = get("/users/#{id}") response.parsed_response end end client = MyApiClient....

    Ruby-Ox一个快速的XML解析器

    1. **引入库**:首先,在Ruby脚本中引入Ox库,`require 'ox'`。 2. **创建解析器**:然后,你可以创建一个Ox::Sax或Ox::Doc对象,根据你的需求选择解析模式。 3. **处理事件**:如果你选择SAX模式,你需要定义一些...

    Ruby编程,实用程序员指南Programming Ruby, The Pragmatic Programmer's Guide

    《Ruby编程,实用程序员指南》是一本针对Ruby语言的学习教程与参考手册,旨在为程序员提供一个全面、深入的Ruby语言学习资源。本书不仅适合初学者快速入门,也适合具有一定经验的开发者进阶学习。 ### 一、Ruby语言...

    ruby+selenium-webdriver测试--第一个例子源代码

    require 'selenium/webdriver' # 初始化WebDriver,这里以Chrome浏览器为例 driver = Selenium::WebDriver.for :chrome # 打开一个网页 driver.get 'http://www.example.com' # 查找页面元素,例如一个搜索框 ...

    Ruby的25个编程细节(技巧、实用代码段)

    **Struct** 和 **OpenStruct** 都是用来创建简单的数据容器的类,但它们之间存在一些显著的区别: - **Struct** 在定义时需要明确声明所有字段,而 **OpenStruct** 可以动态添加属性。 - 性能方面,**Struct** 优于...

    Ruby-RedisObjects直接将Redis类型映射成Ruby对象

    **Ruby-RedisObjects:直接将Redis类型映射成Ruby对象** Ruby-RedisObjects是一个非常实用的库,它允许开发者在Ruby应用程序中直接操作Redis数据结构,就像操作Ruby对象一样。这个框架是Ruby社区对ORM(对象关系...

    ruby 2.00 selenium webdriver,watir webdriver 备份打包

    assert browser.title.include?('Ruby Watir') browser.close ``` 在这个例子中,Watir WebDriver通过更简洁的语句实现了相同的功能,使得代码更易于理解和维护。 总的来说,Ruby 2.00、Selenium WebDriver和...

    Ruby-Perpetuity使用DataMapper模式持久化Ruby对

    Ruby是一种动态、面向对象的编程语言,而DataMapper是一种Object-Relational Mapping(ORM)框架,它在Ruby社区中被广泛使用,特别是对于那些希望在数据库中存储和管理对象的开发者。Perpetuity就是这样一个专门为...

Global site tag (gtag.js) - Google Analytics