このセクションでは、Move言語におけるコードシステムの基本単位であるモジュールについて説明します。モジュールはコードをグループ化し隔離するために使用され、モジュールのメンバーはデフォルトでモジュール内部にプライベートです。このセクションでは、モジュールの定義方法、メンバーの宣言方法、および他のモジュールからのアクセス方法を学びます。
モジュールは、module キーワードの後にパッケージアドレス、モジュール名、そして中括弧 {} 内にモジュール本体を続けて宣言されます。モジュール名はスネークケース(単語間にアンダースコアが付いた全て小文字の文字)であるべきです。モジュール名はパッケージ内で一意でなければなりません。
通常、sources/ フォルダ内の単一のファイルには一つのモジュールが含まれます。ファイル名はモジュール名と一致するべきです。たとえば、donut_shop モジュールは donut_shop.move ファイルに保存されるべきです。コーディング規約については コーディング規約セクションでさらに読むことができます。
module book::my_module {
// モジュール本体
}
構造体、関数、定数、インポートはすべてモジュールの一部です:
モジュールアドレスは、アドレスリテラル(@プレフィックスは必要ありません)または パッケージマニフェスト [TODO] で指定された名前付きアドレスとして指定することができます。以下の例では、Move.tomlの[addresses]セクションに book = "0x0" のレコードがあるため、両方は同一です。
module 0x0::address_literal { /* ... */ }
module book::named_address { /* ... */ }
Move.tomlのアドレスセクション:
# Move.toml
[addresses]
book = "0x0"
モジュールメンバーはモジュール本体内で宣言されます。それを示すために、構造体、関数、および定数を持つシンプルなモジュールを定義しましょう:
module book::my_module_with_members {
// インポート
use book::my_module;
// 定数
const CONST: u8 = 0;
// 構造体
public struct Struct {}
// メソッドエイリアス
public use fun function as Struct.struct_fun;
// 関数
fun function(_: &Struct) { /* 関数本体 */ }
}