モジュール Edit

概要 Edit

  • モジュール == 1つのソースファイル
  • モジュールには1つのpublicな型と0個以上のprivateな型を定義できる
  • モジュールには1つのシンボルを定義できる
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 
 
 
 
 
 
 
 
-
|
|
|
!
 
module Project.A; // Project名前空間のAという名前のモジュールをこのソースファイルで定義することを宣言
 
#spandel
pod A // publicな型はモジュールの最後の名前と同一である必要がある
#spanend
#spanadd
pod A // モジュールの名前と同じ必要がある
#spanend
{
    B b;
    C c;
    int b;
};
#spanadd

モジュール宣言 - module Edit

  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; // 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
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
!
 
 
 
 
 
 
 
#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
#spanadd
 
#spanend
#spanadd

外部モジュール宣言 - import/using Edit

  • 外部のモジュールを使う宣言
  • importキーワードを使うと名前空間付きのフルパスで記述する必要がある。
  • usingキーワードを使うと名前空間を省略することができる
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
!
 
#spanend
#spanadd
module Project.A;
#spanend
#spanadd
using Project.B;
#spanend
#spanadd
import Project.C;
#spanend
#spanadd
 
#spanend
#spanadd
class A
#spanend
{
    float x;
  B b; // usingを使ったのでProject.Bの"Project."の部分が省略できる
  Project.C c; // importを使ったので省略ができない
};

モジュール宣言 - module Edit

インポート宣言 - import/using Edit


    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS