Was ist der Unterschied zwischen require und load?

8

Was ist der Unterschied zwischen der Verwendung von

? %Vor%

und

%Vor%     
Leonardo Wolter 01.02.2013, 13:19
quelle

1 Antwort

11

Wenn Sie% co_de zweimal die gleiche Datei verwenden, wird sie nur einmal geladen und ausgewertet. require hingegen lädt und bewertet die Datei jedes Mal. Es gibt auch Unterschiede in der Auflösung des tatsächlichen Dateinamens ( danke, Saurabh ).

Was bedeutet das praktisch?

Nehmen wir an, wir haben eine Bibliothek load

%Vor%

Dann haben wir eine Datei, die einige nicht-idempotente Operationen durchführt. Sagen wir, undefiniert eine Methode

%Vor%

Dann, wenn wir foo mod.rb zweimal machen, passiert nichts Schlimmes. require wird erfolgreich undefiniert.

%Vor%

Aber wenn wir bar mod.rb zweimal verwenden, dann wird die zweite Operation load fehlschlagen, weil die Methode schon weg ist:

%Vor%

Es gibt keinen Fehler mit undef , weil in diesem Fall require nur einmal vorkommt. Zugegeben, dieses Beispiel ist ziemlich erfunden, aber ich hoffe, es veranschaulicht den Punkt.

    
Sergio Tulentsev 01.02.2013, 13:20
quelle

Tags und Links