モジュール
概要
- モジュール == 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
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
-
|
|
|
|
|
|
!
| #spanend
#spanadd
prototype module Project.Vector3; #spanend
#spanadd
#spanend
#spanadd
pod Vector3
#spanend
#spanadd
{
#spanend
float x;
float y;
float z;
float length()const;
#spanadd
};
#spanend
#spanadd
#spanend
#spanadd
|
外部モジュール宣言 - 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; };
|
|