Variants
优质
小牛编辑
122浏览
2023-12-01
Pascal支持一种名为variant的独特存储类型。 您可以在变量变量中指定任何简单类型的值。 存储在变体中的值的类型仅在运行时确定。 几乎任何简单类型都可以分配给变体:序数类型,字符串类型,int64类型。
结构化类型(如集合,记录,数组,文件,对象和类)与变量不是分配兼容的。 您还可以指定变量的指针。
Free Pascal支持变体。
声明变体
您可以使用var关键字声明变体类型,就像任何其他类型一样。 声明变体类型的语法是 -
var
v: variant;
现在,这个变量变量v可以分配给几乎所有简单类型,包括枚举类型,反之亦然。
type
color = (red, black, white);
var
v : variant;
i : integer;
b : byte;
w : word;
q : int64;
e : extended;
d : double;
en : color;
as : ansistring;
ws : widestring;
begin
v := i;
v := b;
v := w;
v := q;
v := e;
v := en;
v := d:
v := as;
v := ws;
end;
例子 (Example)
以下示例将说明这一概念 -
Program exVariant;
uses variants;
type
color = (red, black, white);
var
v : variant;
i : integer;
r: real;
c : color;
as : ansistring;
begin
i := 100;
v:= i;
writeln('Variant as Integer: ', v);
r:= 234.345;
v:= r;
writeln('Variant as real: ', v);
c := red;
v := c;
writeln('Variant as Enumerated data: ', v);
as:= ' I am an AnsiString';
v:= as;
writeln('Variant as AnsiString: ', v);
end.
编译并执行上述代码时,会产生以下结果 -
Variant as Integer: 100
Variant as real: 234.345
Variant as Enumerated data: 0
Variant as AnsiString: I am an AnsiString