ruby中的require load include extend

這四個方法仍是很好玩頗有用,也是比較容易混的。  

 1.require( aString ) -> true or false 數組

   Ruby試圖載入一個名爲aString的庫,若是成功了就返回true,不然返回false。若是給定的值不是一個絕對路徑,那麼將會在$:中查找。若是給定的名字帶有.rb,則做爲源文件載入;若是擴展名爲.so,.o,.dll等(根據不一樣平臺),Ruby將這些做爲擴展程序來載入;不然,Ruby會自動嘗試在給定的文件名後面加.rb,.so,.dll等。已經載入的庫會放到數組$"中,已經在$"裏的則不會被重複裝載。好比: app

 

require "my-library.rb" 函數

require "db-driver" ui

 

 

2.load( aFileName, wrap=false ) -> true spa

 

裝載並執行aFileName文件,文件搜索方法同上面的require。wrap是可選參數,默認爲false,若是設爲true,則這個文件將在匿名模塊下運行,從而包括調用者的名字空間。任何aFileName裏面的局部變量在裝載它的環境下是不可用的。 對象

 

3.include ci

include主要用來將一個模塊插入(mix)到一個類或者其它模塊。這個模塊的方法在引入它的類或模塊中以函數的形式調用(沒有一個receiver)。這個指令運行時會執行Module.append_features方法。 table

 

 

4.extend class

extend 用來在一個對象(object,或者說是instance)中引入一個模塊,這個類從而也具有了這個模塊的方法。 require

 

module Mod

  def hello2

    "Hello from Mod.n"

  end

end

 

class Klass

  def hello

    "Hello from Klass.n"

  end

end

 

k = Klass.new

k.hello   #"Hello from Klass.n"

k.hello2  # NoMethodError: undefined method `hello2' …

k.extend(Mod)   #<0x2e4c530>

k.hello  #"Hello from Mod.n"

相關文章
相關標籤/搜索