命名及不命名的类型

命名及不命名的类型


为了后续使用或直接用于变量,需要给自定义类型命名。如果自定义一个命名的类型,你必须将代码放在特定的 type 区,如下所示:

type
 // subrange definition
 Uppercase = 'A'..'Z';
 // array definition
 Temperatures = array [1..24] of Integer;
 // record definition
 Date = record
   Month: Byte;
   Day: Byte;
   Year: Integer;
 end;
 // enumerated type definition
 Colors = (Red, Yellow, Green, Cyan, Blue, Violet);
 // set definition
 Letters = set of Char;
你也可使用类型定义构造器直接定义一个变量,此时无需显式命名,如下面的代码:

var
 DecemberTemperature: array [1..31] of Byte;
 ColorCode: array [Red..Violet] of Word;
 Palette: set of Colors;

注意:一般来说,你应该避免使用上述不命名类型,因为你不能把它们作为参数传给例程,也不能用于声名同一类型的其他变量。实际上,Pascal 的类型兼容规则是基于类型名的,而不是基于实际的类型定义。两个类型相同的变量仍有可能是不兼容的,除非他们的类型有完全相同的名字。对于不命名类型,需要编译器给它分配一个内部名字,因此对于数据结构复杂的变量,要习惯于定义命名数据类型,你一定不会为此白费工夫的。

但是上述自定义类型有什么意义呢?如果你不太熟悉 Pascal 类型构造器,通过下面内容你会了解它,此外下面还谈到了同类构造器在不同语言中的差异,因此如果你已熟知上面例举的类型定义,不妨往下读,你会对其中内容感兴趣的。最后,我将演示一些 Delphi 例子,并介绍一些能动态访问类型信息的工具。


联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678