Ruby中require、load、include、extend的區(qū)別介紹
require,load用于文件,如.rb等等結(jié)尾的文件。include,load則用于包含一個(gè)文件中的模塊。
require 一般情況下用于加載庫文件,而load則用于加載配置文件。
1、require:加載一個(gè)庫,并且只加載一次,如果多次加載會(huì)返回false。只有當(dāng)要加載的庫位于一個(gè)分離的文件中時(shí)才有必要使用require。使用時(shí)不需要加擴(kuò)展名,一般放在文件的最前面:
require ‘test_library'
2、load:
load用來多次加載一個(gè)庫,必須指定擴(kuò)展名:
load ‘test_library.rb'
3、extend:在定義類時(shí)使用,把module的實(shí)例方法作為當(dāng)前類的類方法.
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:在定義類時(shí)使用,把module的實(shí)例方法作為當(dāng)前類的實(shí)例方法. 把module的變量作為當(dāng)前類的類變量.
include并不會(huì)把module的實(shí)例方法拷貝到類中,只是做了引用,包含module的不同類都指向了同一個(gè)對象。如果你改變了module的定義,即使你的程序還在運(yùn)行,所有包含module的類都會(huì)改變行為。
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
相關(guān)文章
Ruby設(shè)計(jì)模式編程中對外觀模式的應(yīng)用實(shí)例分析
這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中對外觀模式的應(yīng)用實(shí)例分析,外觀模式在Ruby on Rails開發(fā)項(xiàng)目中也經(jīng)常被用到,需要的朋友可以參考下2016-03-03
Ruby實(shí)現(xiàn)的一個(gè)強(qiáng)大的批量刪除文件腳本分享
這篇文章主要介紹了Ruby實(shí)現(xiàn)的一個(gè)強(qiáng)大的批量刪除文件腳本分享,本文腳本實(shí)現(xiàn)對指定目錄下的文件根據(jù)最后修改時(shí)間刪除文件,需要的朋友可以參考下2015-01-01
Windows下安裝配置Ruby的debug工具ruby-debug-base19
這篇文章主要介紹了Windows下安裝配置Ruby的debug工具ruby-debug-base19的方法,同時(shí)講解了Ruby的IDE RubyMine中的相關(guān)配置方法,需要的朋友可以參考下2016-03-03
淘寶網(wǎng)提供的國內(nèi)RubyGems鏡像簡介和使用方法
由于國內(nèi)的網(wǎng)絡(luò)環(huán)境,導(dǎo)致 rubygems.org 存放在 Amazon S3 上面的資源文件間歇性連接失敗,因此使用gem或bundle時(shí)常常會(huì)遇到長久無響應(yīng)的情況2014-04-04
Ruby實(shí)現(xiàn)郵件主動(dòng)推送觸發(fā)程序
這篇文章主要介紹了Ruby實(shí)現(xiàn)郵件主動(dòng)推送觸發(fā)程序,本文給出了客戶端輪詢和服務(wù)器主動(dòng)推送的代碼實(shí)例,需要的朋友可以參考下2015-01-01

