モジュールの読み込み

Base.require はモジュールの読み込みと事前コンパイルキャッシュの管理を行います。import 文を実装するのがこの関数です。

実験的機能

次に示すのは実験的な機能であり、安定した Julia API の一部ではありません。この機能を使うときは、近いうちに変更される可能性があることを念頭に置いてよく考えてから使ってください。

モジュール読み込みのコールバック

コールバックを登録することで、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
広告