データ型、変数、定数:インデックス(Delphi)
データ型、変数、定数:インデックス への移動
このトピックでは、Delphi の型宣言の構文について説明します。
型宣言の構文
型宣言では、型を示す識別子を指定します。 型宣言の構文を次に示します。
type newTypeName = type
ここでの、newTypeName は有効な識別子です。 たとえば、次のような型宣言があるとします。
type TMyString = string;
変数宣言を次のようにすることができます。
var S: TMyString;
型識別子のスコープは、型宣言自体を含みません(ポインタ型を除く)。 たとえば、それ自体を再帰的に使用するレコード型を定義することはできません。
既存の型と同一の型を宣言すると、コンパイラは新しい型識別子を古い方の型の別名として扱います。 たとえば、次のように宣言されているとします。
type TValue = Real; var X: Real; Y: TValue;
X
と Y
は同じ型です。実行時に、TValue
と Real を区別する方法はありません。 これは通常大きな意味を持ちません。ただし、新しい型を定義する目的が実行時型情報を利用するためである場合(たとえば、プロパティ エディタを特定の型のプロパティに関連付ける場合)、"異なる名前" および "異なる型" の識別は重要になります。 この場合は、次の構文を使用します。
type newTypeName = type KnownType
例:
type TValue = type Real;
これは、コンパイラに TValue
という新しい別個の型を作成させます。
var
パラメータの場合、定義された型と実際の型は同一でなければなりません。 例:
type TMyType = type Integer; procedure p(var t:TMyType); begin end;
procedure x; var m: TMyType; i: Integer; begin p(m); // Works p(i); // Error! Types of formal and actual must be identical. end;
メモ: これは、
var
パラメータのみに適用され、const
または値によるパラメータには適用されません。