[fpc-pascal] compile time init'ing records
Ryan Joseph
ryan at thealchemistguild.com
Fri Apr 13 10:51:50 CEST 2018
> On Apr 13, 2018, at 3:29 PM, Marco van de Voort <marcov at stack.nl> wrote:
>
> Because it is very limited and forces the initialization at the place of
> declaration, which is rare if not zero.
When using other languages I use it often. The fact that all other modern languages I’m aware of support it says something also (even c++!). Granted 0 is most common it’s still very helpful to init at time of declaration because you were just going to do it yourself anyways at the start of the scope. It’s such a common pattern but Pascal is out dated on this front. Records don’t have default constructors also like other modern languages so they need some work in my opinion.
{$DEFINE TMyRecord_Default := (i: 1; s: 'foo’)} is an interesting idea but unfortunately it’s a bit of a hack.
>
> p.s. does r:=default(r); do anything ? Or does that only work in generics?
I didn’t know Default worked with all types and replaces the more verbose FillChar call. That’s a step in the right direction.
Regards,
Ryan Joseph
More information about the fpc-pascal
mailing list