Odpowiedzi:
Tak. Z Nazwanych funkcji (moje podkreślenie):
Nazwa funkcji jest symbolem, który oznacza zbiór funkcji, zmiennych itp. Plik, który je definiuje, powinien zawierać tę funkcję. Inny program, który ich używa, może upewnić się, że zostały zdefiniowane przez wymaganie tej funkcji. Spowoduje to załadowanie pliku definicji, jeśli nie został jeszcze załadowany.
Aby wymagać obecności obiektu, wywołaj go
requirez nazwą obiektu jako argumentem.requiresprawdza zmienną globalną,featuresaby sprawdzić, czy żądana funkcja została już udostępniona. Jeśli nie, ładuje funkcję z odpowiedniego pliku . Ten plik powinien wywoływaćprovidena najwyższym poziomie, aby dodać funkcjęfeatures; jeśli tego nie zrobi,requiresygnalizuje błąd .
Tak, pod warunkiem, że kod jest zgodny z regułą, którą musi wywołać, helm.ellub jest z nim helm.elczgodny (provide 'helm). Wywołanie (provide 'helm)oznacza symbol helmjako załadowaną funkcję , co powoduje, że drugie połączenie (require 'helm)nic nie robi.
Jeśli załadowany pakiet nie wywołuje providenastępnie requiresygnalizuje błąd, a funkcja nie jest oznaczony jako załadowany, więc drugie wywołanie (require 'helm)znowu próbować ładowania (i zazwyczaj nie ponownie z tego samego powodu).