モジュール
概要
- モジュール == 1つのソースファイル
- モジュールには1つのpublicな型と0個以上のprivateな型を定義できる
- モジュールには1つのシンボルを定義できる
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-
|
|
|
!
| #spandel
module Project.A; #spanend
#spanadd
module Project.A; #spanend
#spandel
pod A #spanend
#spanadd
pod A #spanend
{
B b;
C c;
int b;
};
#spanadd
|
モジュール宣言 - module
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| #spanend
#spanadd
ModuleDecl:
#spanend
"module" ModulePath ";"
"prototype" "module" ModulePath ";"
#spandel
// privateな型は何個でも宣言できる
#spanend
#spandel
private pod B
#spanend
#spanadd
ModulePath:
#spanend
NamespacePath "." ModuleName
#spanadd
#spanend
#spanadd
NamespacePath:
#spanend
Namespace
Namespace "." NamespacePath
#spanadd
#spanend
#spanadd
Namespace:
#spanend
Identifier
#spanadd
#spanend
#spanadd
ModuleName:
#spanend
Identifier
#spanadd
#spanend
#spanadd
|
- ソースファイルの何よりも先に記述するキーワード
- 1階層以上の名前空間とこのソースファイルで定義する型の名前を続けて記述する
1
2
3
4
5
6
7
8
|
| #spanend
#spanadd
module Hoge.Foo; #spanend
#spanadd
module Foo; #spanend
#spanadd
|
- プロトタイプモジュールには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
25
26
27
28
|
-
|
|
|
|
|
!
-
|
|
|
!
| #spanend
#spanadd
prototype module Project.Vector3; #spanend
#spanadd
#spanend
#spanadd
pod Vector3
#spanend
{
int x;
float x;
float y;
float z;
float length()const;
};
#spandel
private pod C
#spanend
#spandel
{
#spanend
float x;
#spandel
};
#spanend
|
外部モジュール宣言 - import/using
- 外部のモジュールを使う宣言
- importキーワードを使うと名前空間付きのフルパスで記述する必要がある。
- usingキーワードを使うと名前空間を省略することができる
モジュール宣言 - module
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
-
|
|
|
|
!
| #spanend
#spanadd
module Project.A;
#spanend
#spanadd
using Project.B;
#spanend
#spanadd
import Project.C;
#spanend
#spandel
** インポート宣言 - import/using [#gb466143]
#spanend
#spanadd
class A
#spanend
#spanadd
{
#spanend
B b;
Project.C c;
#spanadd
};
#spanend
#spanadd
|
|