Pascal 变体(variant)
-
变体(variant)
Pascal支持一种称为变体的独特存储类型。您可以在变量中分配任何简单类型的值。存储在变量中的值的类型仅在运行时确定。几乎所有简单类型都可以分配给变体:序数类型,字符串类型,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;
-
示例
以下示例将说明概念-
尝试一下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