Julia Language
モジュール
サーチ…
構文
- モジュールモジュール; ...;終わり
- モジュールを使用して
- インポートモジュール
モジュール内のコードをラップする
module
キーワードを使用してモジュールを始めることができます。これにより、コードを整理して名前空間に入れることができます。モジュールは外部インタフェースを定義することができ、通常はexport
シンボルで構成されます。この外部インターフェイスをサポートするために、モジュールがアンエクスポート内部持つことができる機能と種類の公共の使用を目的としません。
いくつかのモジュールは、主に型と関連する関数をラップするために存在します。このようなモジュールは、通常、型名の複数形で命名されます。たとえば、 Building
型を提供するモジュールがある場合、そのようなモジュールBuildings
呼び出すことができます。
module Buildings
immutable Building
name::String
stories::Int
height::Int # in metres
end
name(b::Building) = b.name
stories(b::Building) = b.stories
height(b::Building) = b.height
function Base.show(io::IO, b::Building)
Base.print(stories(b), "-story ", name(b), " with height ", height(b), "m")
end
export Building, name, stories, height
end
モジュールは、 using
ステートメントで使用できます。
julia> using Buildings
julia> Building("Burj Khalifa", 163, 830)
163-story Burj Khalifa with height 830m
julia> height(ans)
830
モジュールを使用したパッケージの整理
通常、 パッケージは1つまたは複数のモジュールで構成されます。パッケージが大きくなるにつれて、パッケージのメインモジュールをより小さなモジュールに編成すると便利です。一般的なイディオムは、これらのモジュールをメインモジュールのサブモジュールとして定義することです。
module RootModule
module SubModule1
...
end
module SubModule2
...
end
end
当初、ルートモジュールもサブモジュールも互いのエクスポートシンボルにアクセスすることはできません。ただし、この問題に対処するために、相対的なインポートがサポートされています。
module RootModule
module SubModule1
const x = 10
export x
end
module SubModule2
# import submodule of parent module
using ..SubModule1
const y = 2x
export y
end
# import submodule of current module
using .SubModule1
using .SubModule2
const z = x + y
end
この例では、 RootModule.z
の値は30
です。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow