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

require,load用于文件,如.rb等等结尾的文件。include,load则用于包含一个文件中的模块。
require 一般情况下用于加载库文件,而load则用于加载配置文件。

1、require:加载一个库,并且只加载一次,如果多次加载会返回false。只有当要加载的库位于一个分离的文件中时才有必要使用require。使用时不需要加扩展名,一般放在文件的最前面:

复制代码 代码如下:

require ‘test_library'

2、load:
load用来多次加载一个库,必须指定扩展名:

复制代码 代码如下:

load ‘test_library.rb'

3、extend:在定义类时使用,把module的实例方法作为当前类的类方法.

复制代码 代码如下:

module Test
 def class_type
  "This class is of type:#{self.class}"
 end
end

class TestClass
 extend Test
end

puts TestClass.class_type  #=>  This class is of type:Class

4、include:在定义类时使用,把module的实例方法作为当前类的实例方法. 把module的变量作为当前类的类变量.
include并不会把module的实例方法拷贝到类中,只是做了引用,包含module的不同类都指向了同一个对象。如果你改变了module的定义,即使你的程序还在运行,所有包含module的类都会改变行为。

复制代码 代码如下:

module Test
 @a = 1
 def class_type
  "This class is of type:#{self.class}"
 end
end

class TestClass
 include Test
end

# puts TestClass.class_type  #=> undefined method `class_type' for TestClass:Class (NoMethodError)

puts TestClass.new.class_type  #=> This class is of type:TestClass

时间: 2024-09-11 08:13:52

Ruby中require、load、include、extend的区别介绍_ruby专题的相关文章

Ruby中嵌套对象转换成json的方法_ruby专题

JSON由于其数据结构简单便利,已逐渐成为了互联网上的主流数据交换的数据格式. 在讨论嵌套对象(Nested Object)的JSON转换方法之前,我们先看简单的ruby JSON转换.首先,ruby对象转换为JSON字符串: 复制代码 代码如下: class Obj1     def initialize(var1)         @var1 = var1     end     def to_json(*a)         {             "json_class"

Ruby中相等性判断的4种方法_ruby专题

很早就知道 ruby 有 4 种相等性判断方法,分别是:"==","===","equal?" 和 "eql?",平常程序中都有使用,但是感觉对其缺乏深入理解,今天读 rails 部分源码的时候拿捏不定其中一个判断的意思,于是趁机深入研究了一番,总算觉得比较清楚了,今天做一下笔记,以作备忘. "==" 最常见的相等性判断 "==" 使用最频繁,它通常用于对象的值相等性(语义相等)判断,在

Ruby中的反射(Reflection)应用实例_ruby专题

在Java语言中,提供了发射机制,通过发射机制可以通过字符串构造出这个对象,可以获取对象的所有方法(包括私有方法),可以调用私有方法,可以更改成员变量的值(包括私有的成员变量).Ruby也是面向对象的高级语言,当然也提供了反射机制,今天我们讨论通过类名称构造类对象的功能. 一.通过类名称构造类对象 我们先看普通的构造: 复制代码 代码如下: module ModuleA     #the class name, later we will use it to create the corresp

Ruby中一些基本语法知识点的罗列汇总_ruby专题

 让我们写一个简单的ruby程序.所有Ruby源文件将以扩展名.rb.因此,把下面的源代码在一个test.rb文件. #!/usr/bin/ruby -w puts "Hello, Ruby!"; 在这里,假定您已经安装有Ruby解释器,可以在/usr/bin目录找到.现在尝试运行此程序如下: $ ruby test.rb 这将产生以下结果: Hello, Ruby! 通过以上实例,我们已经看到了一个简单的Ruby程序,现在让我们来看看有关Ruby语法的几个基本概念: Ruby程序中的

ruby执行周期性任务的三种gem介绍_ruby专题

1.whenever 首先,whenever是基于linux的cron服务的,所以,在windows平台上没有直接的方法使用该gem.whenever严格来说应该算一个cron的翻译器,将ruby代码翻译为cron脚本,从而将周期性任务转交给cron实际去完成.对于精通cron的shell程序员来说可能不值一提,但对rubyist却不是.首先,我们可以使用ruby语言来书写任务代码,在ruby层面上控制代码,避免了和一些shell脚本的切换:另外,cron命令很强大,但我总是记不住它的命令参数,

Ruby 中一些百分号(%)的用法小结_ruby专题

%Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") 复制代码 代码如下: >> %Q(Joe said: "Frank said: "#{what_frank_said}"")=> "Joe said: "Frank said: "Hello!""" (...)也可用其他非数字字母的符号或成对的符号代替

Ruby中常用的字符串处理函数使用实例_ruby专题

1.返回字符串的长度 复制代码 代码如下: str.length => integer 2.判断字符串中是否包含另一个串 复制代码 代码如下: str.include? other_str => true or false "hello".include? "lo"   #=> true "hello".include? "ol"   #=> false "hello".includ

在Ruby中创建和使用哈希的教程_ruby专题

哈希(Hash)是类似 "employee" => "salary" 这样的键值对的集合.哈希的索引是通过任何对象类型的任意键来完成的,而不是一个整数索引,其他与数组相似. 通过键或值遍历哈希的顺序看起来是随意的,且通常不是按照插入顺序.如果您尝试通过一个不存在的键访问哈希,则方法会返回 nil. 创建哈希 与数组一样,有各种不同的方式来创建哈希.您可以通过 new 类方法创建一个空的哈希: months = Hash.new 您也可以使用 new 创建带有默

Ruby中的方法(函数)学习总结_ruby专题

1.Ruby中方法名和变量名的命名规则一样(以小写字母开头,单词之间的分隔使用"_",),不过可以在方法名后边带上!(重磅方法)或者?(布尔类型返回值). 2.方法的参数请使用(),参数都是局部变量,可以为这些参数设置默认值,带"*"的参数是可选动态参数,可以传入一个或者多个,如果有普通参数,也有可选参数,可选参数要放在最后,如下边示例代码. 复制代码 代码如下: def read_book(chinese='水浒传',english='Jane Eyre',*ot