【Julia入門】Juliaのモジュール② 新しいモジュールの定義

統計や機械学習に関するプログラミングではPythonRが用いられることが多いですが、近年Juliaも注目を集めています。そこで当シリーズではJuliaの基本構文からライブラリの用い方などについて取りまとめます。当記事では新しいモジュールの定義について取りまとめを行いました。

Julia入門
https://www.hello-statisticians.com/julia

Julia 1.8 Documentation
https://docs.julialang.org/en/v1/

モジュールの定義

モジュールは下記のように定義することができます。

module Greeting1
hello(name) = println("Hello, $(name).")
end

Greeting1.hello("Julia")

・実行結果

Hello, Julia.

上記ではGreeting1モジュールにhello関数の定義を行いました。Greeting1.helloを実行することでhello関数を実行することができます。

モジュールの相対パス指定

前節ではモジュールの定義のみを行いましたが、Mainモジュールからの相対パスに基づいてモジュールを読み込むことができます。下記ではMainモジュールからの相対パス.Greeting2を用いることでGreeting2の読み込みを行いました。

module Greeting2
export hello
hello(name) = println("Hello, $(name).")
goodbye(name) = println("Goodbye, $(name).")
end

Greeting2.hello("Julia")
Greeting2.goodbye("Julia")

using .Greeting2
hello("Julia")
goodbye("Julia")

・実行結果

Hello, Julia.
Goodbye, Julia.
Hello, Julia.

UndefVarError: goodbye not defined

モジュールを読み込む際にモジュール定義の中でexportで指定した関数はモジュールを読み込むとそのまま使用することができます。上記の例ではexport helloがあるので、helloはそのまま実行できる一方でgoodbyeはそのまま実行できないことが確認できます。

参考

Julia 1.8 Documentation
https://docs.julialang.org/en/v1/