Se você load
usar uma biblioteca repetidamente, esse arquivo será lido e seu código avaliado repetidamente (sempre que você o carregar).
Se você for require
uma biblioteca repetidamente, ela será load
a biblioteca uma vez (no máximo - e de modo algum se a biblioteca já tiver sido carregada).
require
fornece essa eficiência mesmo que require
não tenha sido usado para carregar a biblioteca inicialmente, porque (a grande maioria das) bibliotecas contém o código (provide 'FEATURE)
para seu FEATURE
nome específico . Esse código é avaliado quando a biblioteca é carregada, independentemente de como foi carregada, e nesse momento atualiza os dados que require
verificam ao decidir se é necessário fazer alguma coisa.
Principalmente, você deseja usar require
em seu próprio código, se precisar garantir que uma determinada biblioteca tenha sido carregada.
O motivo pelo qual você geralmente não precisa fazer isso com os pacotes ELPA é que o gerenciador de pacotes processa automaticamente qualquer cookie de carregamento automático no pacote e gera um arquivo de carregamento automático para esse pacote. Quando o sistema de pacotes é inicializado quando você inicia o Emacs, é avaliado o arquivo de carregamento automático de cada pacote, que identifica todas as funções de carregamento automático. Quando uma função carregada automaticamente é chamada, a biblioteca que contém a definição real da função é carregada automaticamente.
Os autores do pacote podem adicionar um cookie de carregamento automático a cada função que o usuário possa chamar diretamente e, portanto, desde que as expectativas estejam corretas, você não precisará ligar require
ou carregar explicitamente o pacote para usá-lo.
Observe que você também pode definir seus próprios carregamentos automáticos personalizados. Veja C-hig (elisp) Autoload
RETe também (elisp) Hooks for Loading
se você deseja usar o carregamento lento e a configuração adiada das bibliotecas em sua própria configuração. (O último a dizer "não avalie esse código até que esta biblioteca tenha sido carregada", o que está relacionado com o mecanismo "não carrega esta biblioteca até que seja necessário").
M-x describe-function
ler a sequência de documentos. akaC-h f
DigiteM-x describe-function RET require RET
e leia a sequência de documentos. Em seguida, digiteM-x describe-function RET load-file RET
e leia a sequência de documentos. Em seguida, digiteM-x describe-function RET load RET
e leia a sequência de documentos. Depois de ler todas as três seqüências de documentos, edite sua pergunta para comparar e contrastar todas as três funções e esclarecer o que você ainda não entende em relação a elas. Empregamos o mesmo procedimento para variáveis - ieM-x describe-variable
,.