2015-12-22 14 views
5

Nie rozumiem różnicy między trzema metodami importowania biblioteki lub modułu. Jak obecnie zrozumieć,Zrozumienie różnicy między `load`,` require` oraz `require_relative`

load 'file.rb' 

będzie importować zawartość pliku zewnętrznego do bieżącego pliku następuje:

require 'file.rb' 

byłoby wykonać taką samą funkcjonalność, ale nie importować plik, który został już zaimportowany .

require_relative 'file.rb' 

jest podobna do require, ale będzie to załadować plik, który jest tylko w bieżącym katalogu natomiast require użyje ścieżkę przeszukiwania $: w celu znalezienia pliku. Nie mam wątpliwości, że moje zrozumienie trzech mechanizmów jest błędne. Czy ktokolwiek mógłby zaoferować jakieś wyjaśnienie?

+0

to prawie wszystko. require_relative odnosi się do bieżących lokalizacji plików. ładuj zawsze ładuj, wymagaj za pierwszym razem. – Mircea

+2

Możesz również przez to przejść: - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Abhi

Odpowiedz

8

load jest używany, gdy chcesz zaimportować plik niezależnie od tego, czy został już zaimportowany. require lub require_relative jest używany, gdy chcesz zaimportować plik tylko wtedy, gdy jeszcze go nie było.

Z tego wynika, że ​​ten pierwszy jest używany, gdy importowany plik jest przedmiotem analizy (plik danych), podczas gdy drugi służy do zapewnienia niektórych funkcji, które mają być używane w programie (część programu, biblioteka , ramy).

Podczas gdy require może obsługiwać tylko ścieżki w stosunku do $:, require_relative jest rozszerzeniem, które może obsługiwać ścieżki w stosunku do bieżącego katalogu. require_relative jest nadzbiorem require, a require może zostać wydane (chociaż require_relative jest napisane przy użyciu require, więc musi zostać przepisane, jeśli ma zostać wydane require).

Powiązane problemy