Pascal — 變體



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
廣告