2012-07-25 108 views
9

我看到別人的庫下面的代碼:需要模塊內的文件?

module Twitter 
    module Bootstrap 
     module Rails 
     require 'twitter/bootstrap/rails/engine' if defined?(Rails) 
     end 
    end 
end 

require 'less-rails' 
require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails) 

Source

我想知道有什麼區別,當我們在一個模塊中把require

回答

11

require而言,沒有區別,即require始終將文件加載到全局名稱空間中。

應當指出的是,在這種情況下,內require總是運行,因爲Rails在這一點上是指它是內部的模塊,所以if聲明總會評估爲true。

這意味着代碼等同於可能不易混淆:

module Twitter 
    module Bootstrap 
    module Rails 
    end 
    end 
end 

require 'twitter/bootstrap/rails/engine' 
require 'less-rails' 
require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails)