Si vous load
une bibliothèque à plusieurs reprises, ce fichier sera lu et son code évalué à plusieurs reprises (à chaque fois que vous le chargez).
Si vous require
une bibliothèque à plusieurs reprises, il sera load
la bibliothèque une fois (au plus - et pas du tout si la bibliothèque avait déjà été chargée).
require
fournit cette efficacité même si elle require
n'était pas utilisée pour charger la bibliothèque au départ, car (la grande majorité des) bibliothèques contiennent le code (provide 'FEATURE)
de leur FEATURE
nom particulier . Ce code est évalué lors du chargement de la bibliothèque, quelle que soit la façon dont il a été chargé, et à ce moment-là, il met à jour les données qui require
vérifient lorsqu'il décide s'il doit faire quelque chose.
Généralement, vous souhaitez utiliser require
dans votre propre code, si vous devez vous assurer qu'une bibliothèque donnée a été chargée.
La raison pour laquelle vous n'avez souvent pas besoin de le faire avec les packages ELPA est que le gestionnaire de packages traite automatiquement tous les cookies de chargement automatique dans le package et génère un fichier de chargement automatique pour ce package. Lorsque le système de packages est initialisé lorsque vous démarrez Emacs, le fichier de chargement automatique de chaque package est évalué, qui identifie toutes les fonctions chargées automatiquement. Lorsqu'une fonction chargée automatiquement est appelée, la bibliothèque qui contient la définition réelle de la fonction est automatiquement chargée.
Les auteurs de packages peuvent ajouter un cookie de chargement automatique à chaque fonction que l'utilisateur pourrait appeler directement et donc, à condition que leurs attentes soient correctes, vous n'aurez pas besoin d'appeler require
ou de charger explicitement le package pour l'utiliser.
Notez que vous pouvez également définir vos propres chargements automatiques personnalisés. Voir C-hig (elisp) Autoload
RETet aussi (elisp) Hooks for Loading
si vous souhaitez utiliser le chargement différé personnalisé et la configuration différée des bibliothèques dans votre propre configuration. (Ce dernier pour dire "n'évalue pas ce code jusqu'à ce que cette bibliothèque ait été chargée", ce qui correspond bien au mécanisme de chargement automatique "ne charge pas cette bibliothèque tant qu'il n'est pas nécessaire").
M-x describe-function
de lire la doc-string. akaC-h f
TapezM-x describe-function RET require RET
et lisez la doc-string. Tapez ensuiteM-x describe-function RET load-file RET
et lisez la doc-string. Tapez ensuiteM-x describe-function RET load RET
et lisez la doc-string. Après avoir lu les trois chaînes de doc, veuillez modifier votre question pour comparer et contraster les trois fonctions et clarifier ce que vous ne comprenez toujours pas par rapport à celles-ci. Nous utilisons la même procédure pour les variables - à savoir,M-x describe-variable
.