Juliaのモジュールの使い方について調べたのでメモ。

以下のような TestModule.jl を使うことを考える

module TestModule

function add(a, b)
    return a + b
end
export add

function sub(a, b)
    return a - b
end

end

これをファイル内で読み込むには以下のようにする

include("TestModule.jl")

println(TestModule.add(1, 2))
println(TestModule.sub(1, 2))
include("TestModule.jl")
using .TestModule

println(add(1, 2)) # using かつ export しているのでこのように呼び出せる
println(TestModule.sub(1, 2))

includeすると、外部のファイルを現在のファイルに読み込むことができる。
また、exportすることで、usingを使ってモジュール内の関数を呼び出すことができる。

次の実装はエラーになる

include("TestModule.jl")

println(add(1, 2))
# ERROR: UndefVarError: add not defined
include("TestModule.jl")
using .TestModule

println(add(1, 2))
println(sub(1, 2))
# ERROR: LoadError: UndefVarError: `sub` not defined