モジュール 
概要 
- モジュール == 1つのソースファイル
- モジュールには1つのシンボルを定義できる
1
2
3
4
5
6
|
-
|
!
| module Project.A;
pod A {
int b;
};
|
モジュール宣言 - module 
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ModuleDecl:
"module" ModulePath ";"
"prototype" "module" ModulePath ";"
ModulePath:
NamespacePath "." ModuleName
NamespacePath:
Namespace
Namespace "." NamespacePath
Namespace:
Identifier
ModuleName:
Identifier
|
- ソースファイルの何よりも先に記述するキーワード
- 1階層以上の名前空間とこのソースファイルで定義する型の名前を続けて記述する
1
2
|
| module Hoge.Foo; module Foo;
|
- プロトタイプモジュールにはprototypeを前に付ける。(プロトタイプモジュールの項を参照)
- プロトタイプモジュールはpublicな定数・変数・関数・ユーザー定義型を宣言する。
- プロトタイプモジュールの関数の実装や定数の値はランタイムで設定される。
1
2
3
4
5
6
7
8
9
10
|
-
|
|
|
|
!
| prototype module Project.Vector3;
pod Vector3
{
float x;
float y;
float z;
float length()const; };
|
外部モジュール宣言 - import/using 
- 外部のモジュールを使う宣言
- importキーワードを使うと名前空間付きのフルパスで記述する必要がある。
- usingキーワードを使うと名前空間を省略することができる
1
2
3
4
5
6
7
8
9
10
|
-
|
|
!
| module Project.A;
using Project.B;
import Project.C;
class A
{
B b; Project.C c; };
|
|