O uso requer várias vezes no mesmo símbolo idempotente?


11

É requireidempotent? ie fazer

(require 'helm)

e

(require 'helm)
(require 'helm)

terminar com o mesmo resultado?

Respostas:


14

Sim. Dos recursos nomeados (ênfase minha):

Um nome de recurso é um símbolo que representa uma coleção de funções, variáveis ​​etc. O arquivo que os define deve fornecer o recurso. Outro programa que os utiliza pode garantir que eles sejam definidos exigindo o recurso. Isso carrega o arquivo de definições, se ainda não tiver sido carregado.

Para exigir a presença de um recurso, chame requirecom o nome do recurso como argumento. requireprocura na variável global featurespara ver se o recurso desejado já foi fornecido. Caso contrário, ele carrega o recurso do arquivo apropriado . Esse arquivo deve ser chamadoprovide no nível superior para adicionar o recursofeatures ; se não o fizer, requiresinaliza um erro .


Aceito para citar os documentos.
PythonNut

Incorpore aqui as informações da resposta de Gilles. Ou @Gilles, colocar essa resposta na sua também funcionaria.
precisa saber é o seguinte

13

Sim, desde que o código respeite helm.elou helm.elcrespeite a regra que ele deve chamar (provide 'helm). A chamada (provide 'helm)marca o símbolo helmcomo um recurso carregado e isso faz com que a segunda chamada (require 'helm)não faça nada.

Se o pacote carregado não chamar provide, requiresinaliza um erro e o recurso não está marcado como carregado. Portanto, uma segunda chamada (require 'helm)tentaria o carregamento novamente (e normalmente falharia novamente pelo mesmo motivo).


+1 Obrigado pela informação extra. Isso resolveu minha confusão depois de ler os documentos.
PythonNut
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.