2015-12-22 2 views
5

Non capisco la differenza tra i tre metodi di importazione della libreria o del modulo. Come ho attualmente capito,Comprendere la differenza tra `load`,` require` e `require_relative`

load 'file.rb' 

sarebbe importare il contenuto del file esterno nel file corrente, mentre:

require 'file.rb' 

avrebbe eseguito la stessa funzionalità, ma non sarebbe importare un file che era già stato importato .

require_relative 'file.rb' 

è simile a require, ma sarà caricare un file che è solo nella directory corrente, mentre require utilizzerà il percorso di ricerca $:, nel tentativo di trovare il file. Non ho dubbi che la mia comprensione dei tre meccanismi è imperfetta. Qualcuno potrebbe offrire qualche chiarimento?

+0

questo è praticamente tutto. require_relative è relativo alle posizioni dei file correnti. caricare sempre carico, richiedere solo la prima volta. – Mircea

+2

Ti potrebbe interessare anche questo: - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Abhi

risposta

8

load viene utilizzato quando si desidera importare un file indipendentemente dal fatto che sia già stato importato. require o require_relative viene utilizzato quando si desidera importare un file solo se non è già stato.

Da ciò segue che il primo viene utilizzato quando il file importato è l'oggetto di analisi (file di dati), mentre il secondo viene utilizzato per fornire alcune funzionalità da utilizzare nel programma (parte del programma, libreria , struttura).

Mentre require può gestire solo i percorsi relativi a $:, require_relative è un'estensione che può gestire anche i percorsi relativi alla directory corrente. require_relative è un sovrainsieme di require e require può essere erogato (sebbene require_relative è scritto usando require, quindi deve essere riscritto se require sono impartiti).