Das "Integer" ist nicht wichtig. Du könntest auch Boolean nehmen und dann statt 0 und 1 True und False. Du brauchst nur einen ordinalen Typen und kannst mit dessen Werten dann die Möglichkeiten durchnummerieren.
Die Syntax stammt daher, dass es in Delphi auch "tagged unions" gibt:
Delphi-Quellcode:
TFoo = record
case tag: Integer of
0: (a: TA);
1: (b: TB);
end;
Hier ist vorgesehen, dass TFoo.a gültig ist, wenn tag 0 ist, und TFoo.b, wenn tag 1 ist.
Delphi überprüft zur Laufzeit zwar nicht, ob auf die Teile des Records nur beim gültigen Tag zugegriffen wird, aber die Syntax ist im Sinne von selbstdokumentierendem Code recht interessant.