[fpc-devel] case is
genericptr at gmail.com
Thu Mar 24 02:34:49 CET 2022
> On Mar 24, 2022, at 8:14 AM, Hairy Pixels <genericptr at gmail.com> wrote:
> Search for "Case statement for class introspection” and you see can the little discussion we had about a potential speed up and why it wasn’t viable so for now it’s just using a if-else statement with A.ClassType = B.ClassType comparisons. It’s just syntactic sugar at this point but it was trivial to implement and I think it’s much nicer to work with so for me that’s a total win.
I just realized one thing worth changing. So this is how I implemented it, essentially it’s a case-of-ClassType, which means the compiler now has: case of ordinal, case of string and case of classType.
c := TInterfacedObject.Create;
case c of
TObject: result := 1;
TInterfacedObject: result := 2;
TAggregatedObject: result := 3;
otherwise result := 4;
But because I did an implicit “c.ClassType” it wouldn’t be possible to use “nil” as a case. Maybe not a big deal because you can capture nil in “otherwise” but it’s something to consider.
More information about the fpc-devel