Sven Barth wrote 10 lines
Am 01.06.2021 um 20:20 schrieb denisgolovan via fpc-pascal:
>
> I am trying to implement Option<T> type in FPC.
>
> type
> generic TOption<T> = record
> case IsSome:boolean of
> true: ( some: T );
> false: ();
> end;
Well as already discovered type like strings can not go into a "record case"
But... The above record is anyway of constant size. I.e. the memory for the field is always included, even if it is not used.
Since the "false" block is empty, you can do
type
generic TOption<T> = record
IsSome:boolean;
some: T;
end;
It is not as expressive to the reader of the code. But it leads to the same data in memory.
There is only a diff, if the other blocks of the record (the false block) also has/have data.
With case the memory will overlap.