2015-12-22 73 views
5

我不明白導入庫或模塊的三種方法之間的區別。由於我目前的理解,瞭解`load`,`require`和`require_relative`之間的區別

load 'file.rb' 

將導入外部文件的內容插入到當前文件,而:

require 'file.rb' 

將執行相同的功能,但不會導入已經導入的文件。

require_relative 'file.rb' 

類似於require,但它會加載一個文件,該文件只在當前目錄下,而require將努力找到文件中使用的搜索路徑$:。我毫不懷疑,我對這三種機制的理解是有缺陷的。任何人都可以提供一些澄清?

+0

這就是它。 require_relative是相對於當前文件位置。負載始終加載,只需要第一次。 – Mircea

+2

您也可以喜歡: - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Abhi

回答

8

load用於想要導入文件而不管是否已導入文件。 requirerequire_relative僅當您想要導入文件時,纔會使用該文件。

由此可見,當導入的文件是分析對象(數據文件)時使用前者,而後者用於提供某些要在程序中使用的功能(部分程序,庫,框架)。

儘管require只能處理相對於$:的路徑,但require_relative也是一種可處理相對於當前目錄的路徑的擴展。 require_relativerequire的超集,並且require可以分配(儘管require_relative使用寫入,因此如果要分配require則必須重寫)。

相關問題