> On Nov 12, 2018, at 12:25 AM, Sven Barth via fpc-pascal
> <[email protected]> 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 - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal