2015-12-22 10 views
5

Ich verstehe nicht den Unterschied zwischen den drei Methoden zum Importieren von Bibliothek oder Modul. Da ich zur Zeit es versteht,Der Unterschied zwischen "load", "require" und "require_relative" verstehen

load 'file.rb' 

würde den Inhalt der externen Datei in die aktuelle Datei importieren, während:

require 'file.rb' 

die gleiche Funktionalität durchführen würde, würde aber nicht eine Datei importieren, die bereits importiert worden waren .

require_relative 'file.rb' 

ist ähnlich require, aber es wird eine Datei zu laden, die nur im aktuellen Verzeichnis ist, während require den Suchpfad $: in dem Bemühen, verwenden Sie die Datei zu finden. Ich habe keinen Zweifel, dass mein Verständnis der drei Mechanismen fehlerhaft ist. Könnte jemand eine Klarstellung anbieten?

+0

das ist es ziemlich viel. require_relative ist relativ zu den aktuellen Dateipositionen. laden immer laden, nur beim ersten mal verlangen. – Mircea

+2

Sie möchten vielleicht auch dies durchgehen: - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-in-clude-vs-e-tend/ – Abhi

Antwort

8

load wird verwendet, wenn Sie eine Datei unabhängig davon importieren möchten, ob sie bereits importiert wurde. require oder require_relative wird verwendet, wenn Sie eine Datei nur importieren möchten, wenn dies nicht bereits geschehen ist.

Daraus folgt, dass ersteres verwendet wird, wenn die importierte Datei das Objekt der Analyse (Datendatei) ist, während letzteres verwendet wird, um einige Funktionen im Programm (Teil des Programms, Bibliothek , Rahmen).

Während require nur Pfade relativ zu $: verarbeiten kann, ist require_relative eine Erweiterung, die auch Pfade relativ zum aktuellen Verzeichnis verarbeiten kann. require_relative ist eine Obermenge von require, und require kann verzichtet werden (obwohl require_relative geschrieben wird mit require, so dass es neu geschrieben werden muss, wenn require ausgegeben werden soll).

Verwandte Themen