> On Nov 12, 2018, at 12:25 AM, Sven Barth via fpc-pascal > <fpc-pascal@lists.freepascal.org> wrote: > > I'm not convinced that this feature is really needed, because one can simply > create a constant and assign that, would transport a clear name as well.
This is for runtime though and necessarily for constants. It’s just a short hand for initializing records so you don’t need to make boiler plate constructors. Often time when you create a new record you add a constructor so you can init in one line. Swift and c++ both have this default constructor and it’s a nice time saver. for example: struct Vec2 { float x,y; }; int main() { Vec2 v = {1,2}; v = {v.x + 1, v.y + 1}; return 0; } > But *if* I had to decide I would pick #1, cause then there wouldn't be the > chance to break existing code if a user decides to add a constructor to their > record and some other code relies on there not being a constructor. Also due > to the syntax TYPENAME(FIELDNAME:VALUE[;FIELDNAME:VALUE[;…]]) it's in > principle possible to have the parser distinguish whether it's a typecast or > a default constructor. Yeah there could be name conflicts then. Maybe there should be some way to explicitly state you want the constructor with a certain name, i.e., type TVec2 = record x, y: integer; constructor create; default; end; ??? I don’t know, just an idea. Regards, Ryan Joseph _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal