March 28, 2013 [Issue 9825] New: Add ability to auto-generate a specific field constructor | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=9825 Summary: Add ability to auto-generate a specific field constructor Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: andrej.mitrovich@gmail.com --- Comment #0 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-03-28 12:48:51 PDT --- Let's say you have a Rectangle struct: struct Rect { int x; int y; int width; int height; } Later on you add two additional structures: struct Point { int x; int y; } struct Size { int width; int height; } So as a convenience you want to enable constructing a Rect with these types: struct Rect { int x; int y; int width; int height; /** Construct from Point and Size. */ this(Point point, Size size) { this.x = point.x; this.y = point.y; this.width = size.width; this.height = size.height; } } However this disables the default field-based constructor. We should have the ability to explicitly reintroduce the field-based constructor. But to avoid accidentally generating the field constructor for *any* field we can take advantage of the 'default' keyword for marking which fields should be part of a default ctor. For example: struct S { // non-default ctor this(string first, string last) { this.name = first ~ last; } string fullname; default: int field1; int field2; } Here a default constructor would be generated that only initializes the fields marked as 'default', in other words the above can be constructed with: auto s1 = S("John", "Doe"); // custom ctor auto s2 = S(1, 2); // default ctor The benefit here is that a default ctor is only generated for fields marked as default, meaning that introducing new non-default fields does not update the default ctor. Perhaps the feature could be incorporated for classes too. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 17, 2013 [Issue 9825] Add ability to auto-generate a specific field constructor | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrej Mitrovic | http://d.puremagic.com/issues/show_bug.cgi?id=9825 Andrej Mitrovic <andrej.mitrovich@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WONTFIX --- Comment #1 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-09-17 16:13:32 PDT --- I hate this idea now, too much complications, and an added additional meaning for the default keyword. Anywho a mixin can just as easily be used. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation