2015-12-22 5 views
5

ライブラリやモジュールをインポートする3つの方法の違いは分かりません。同じ機能を実行することになりますが、すでに輸入されたファイルをインポートしません`load`と` require`と `require_relative`の違いを理解する

require 'file.rb' 

:私は現在、それを理解すると、

load 'file.rb' 

は、一方で、現在のファイルに外部ファイルの内容をインポートします。

require_relative 'file.rb' 

requireに似ていますが、それはrequireは、ファイルを見つけるための努力の検索パス$:を使用するのに対し、現在のディレクトリにあるファイルをロードします。私は3つのメカニズムについての私の理解に間違いがあることは間違いない。誰かが何らかの説明をしてくれますか?

+0

これはかなりです。 require_relativeは、現在のファイルの場所に関連しています。ロードは常にロード、最初の時間が必要です。 – Mircea

+2

あなたもこれを通過したいと思うかもしれません: - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Abhi

答えて

8

loadは、インポート済みかどうかにかかわらずファイルをインポートする場合に使用します。 requireまたはrequire_relativeは、ファイルをまだインポートしていない場合にのみインポートする場合に使用します。

これは、インポートされたファイルが解析対象(データファイル)であるのに対して、後者はプログラムで使用されるいくつかの機能を提供するために使用されることになります(ライブラリの一部、フレームワーク)。

requireは、$:に関連するパスのみを処理できますが、require_relativeは、現在のディレクトリとの相対パスも処理できる拡張機能です。 require_relativeは、requireのスーパーセットであり、requireを分配することができる(require_relativerequireを使用して書かれているので、requireを分配する必要がある場合は書き換えなければならない)。

関連する問題