b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(41)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

因为字段名的范围被限定在记录本身,你不必担心字段名和其它变量发生冲突。

Instead of defining record types, you can use the record ... construction directly in variable declarations: 除了定义记录类型,你也可以使用record ...构造直接声明变量:

var S: record

Name: string;

Age: Integer;

end;

但是,这样不能让你重复使用类型声明,并且,这样声明的类型不是赋值兼容的,即使它们(记录)的结构完全相同。

Variant parts in records(记录中的变体部分,变体记录)

一个记录类型能拥有变体部分,它看起来就像case语句,在声明中,

要声明一个变体记录,使用下面的语法:

type recordTypeName = record

fieldList1: type1;

...

fieldListn: typen;

case tag: ordinalType of

constantList1: (Variant1);

...

constantListn: (Variantn);

end;

声明的前面部分(直到关键字case)和标准记录类型一样,声明的其余部分(从

分号,)称为变体部分,在变体部分

z tag是可选的,它可以是任何有效标志符。如果省略了tag,也要省略它后面的冒号(

z ordinalType表示一种有序类型。

z 每个constantList表示一个ordinalType类型的常量,或者用逗号隔开的常量序列。在所有的常量

中,一个值不能出现多次。

z 每个Variant是一个由逗号隔开的、类似于fieldList: type的声明列表,也就是说,

的形式:

fieldList1: type1;

...

fieldListn: typen;

这里,每个fieldList是一个有效标志符,或是由逗号隔开的标志符列表,

最后一个分号是可选的。这些类型不能是长字符串、动态数组、变体类型或接口(都属于动态管理类型),也不能是包含上述类型的结构类型,但它们可以是指向这些类型的指针。

变体记录类型语法复杂,但语义却很简单:记录的变体部分包含几个变体类型,它们共享同一个内存区域。你能在任何时候,对任何一个变体类型的任何字段读取或写入,但是,当你改变了一个变体的一个- 60 - case到最后一个可选的:)。 Varianttype表示一种类型, 变体部分必须跟在其它字段的后面。 有下面每个

Data types, variables and constants

字段,又改变了另一个变体的一个字段时,你可能覆盖了自己的数据。如果使用了tag,它就像记录中非变体部分一个额外的字段,它的类型是ordinalType。

变体部分有两个目的。首先,假设你想创建这样一个记录:它的字段有不同类型的数据,但你知道,在一个(记录)实例中你永远不需要所有的字段,比如:

type

TEmployee = record

FirstName, LastName: string[40];

BirthDate: TDate;

case Salaried: Boolean of

True: (AnnualSalary: Currency);

False: (HourlyWage: Currency);

end;

这里的想法是,每个雇员或者是年薪,或者是小时工资,但不能两者都有。

的实例时,没必要为每个字段都分配内存。在上面的情形中,变体间的唯一区别在于字段名,但更简单的情况是字段拥有不同的类型。看一下更复杂的例子:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-41.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...