Загрузка модулей
Функция Base.require
отвечает за загрузку модулей и управление кэшем предварительной компиляции. Это реализация оператора import
.
Экспериментальные функции
Описанные ниже функции являются экспериментальными и не входят в стабильную версию API Julia. Перед их использованием для сборки уточните, каков их текущий статус и могут ли они измениться в ближайшее время.
Обратные вызовы загрузки модулей
Для отслеживания модулей, загружаемых функцией Base.require
, можно зарегистрировать обратный вызов.
loaded_packages = Channel{Symbol}()
callback = (mod::Symbol) -> put!(loaded_packages, mod)
push!(Base.package_callbacks, callback)
Обратите внимание, что символ, передаваемый в обратный вызов, является неуникальным идентификатором. Поставщик обратного вызова должен отследить цепочку модулей, чтобы определить полное имя загружаемой привязки.
Ниже приведен пример такого обратного вызова:
# Получаем полное имя модуля.
function module_fqn(name::Symbol)
fqn = fullname(Base.root_module(name))
return join(fqn, '.')
end