Відповіді:
Так. З іменованих функцій (моє наголос):
Назва функції - це символ, який позначає сукупність функцій, змінних тощо. Файл, який їх визначає, повинен містити функцію. Інша програма, яка їх використовує, може гарантувати, що вони визначені, вимагаючи функції. Це завантажує файл визначень, якщо він ще не був завантажений.
Щоб вимагати наявності функції, зателефонуйте
require
з ім'ям функції в якості аргументу.require
дивиться в глобальну змінну,features
щоб побачити, чи потрібна функція вже надана. Якщо ні, він завантажує функцію з відповідного файлу . Цей файл повинен зателефонуватиprovide
на верхньому рівні, щоб додати функцію доfeatures
; якщо цього не зробити,require
сигналізує про помилку .
Так, за умови, що код відповідає helm.el
або helm.elc
дотримується правила, яке він повинен викликати (provide 'helm)
. Виклик (provide 'helm)
позначає символ helm
як завантажену функцію , і це призводить до того, що другий дзвінок (require 'helm)
нічого не робить.
Якщо завантажений пакет не дзвонить, provide
то require
подає сигнал про помилку, а функція не позначена як завантажена, тож другий виклик (require 'helm)
повторить спробу завантаження (і, як правило, повторно завершиться з тієї ж причини).