Pascal - Varianti
Pascal supporta un tipo unico di archiviazione denominato varianti. È possibile assegnare qualsiasi tipo semplice di valori in una variabile variant. Il tipo di valore memorizzato in una variante viene determinato solo in fase di esecuzione. Quasi tutti i tipi semplici possono essere assegnati alle varianti: tipi ordinali, tipi di stringa, tipi di int64.
I tipi strutturati come set, record, array, file, oggetti e classi non sono compatibili con l'assegnazione di una variante. Puoi anche assegnare un puntatore a una variante.
Pascal gratuito supporta le varianti.
Dichiarazione di una variante
Puoi dichiarare il tipo di variante come qualsiasi altro tipo usando varparola chiave. La sintassi per dichiarare un tipo di variante è:
var
v: variant;
Ora, questa variabile variant v può essere assegnata a quasi tutti i tipi semplici, inclusi i tipi enumerati e viceversa.
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;
Esempio
Il seguente esempio illustrerebbe il concetto:
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.
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Variant as Integer: 100
Variant as real: 234.345
Variant as Enumerated data: 0
Variant as AnsiString: I am an AnsiString