Auto constructor [Was: Archetype language]
bearophile
bearophileHUGS at lycos.com
Sun Mar 20 16:55:04 PDT 2011
Among the things I've listed about Archetype there's one interesting thing. Class instances aren't PODs, but sometimes I prefer reference semantics and to populate fields in a plain way, expecially for simple classes.
Time ago I and other people have suggested a syntax like (this also to avoid a class of bugs http://d.puremagic.com/issues/show_bug.cgi?id=3878 ):
class Foo {
string x;
int y = 1;
this(this.x, this.y) {}
}
void main() {
Foo f3 = new Foo("hello", 10);
}
A simpler solution are classes with automatic constructors:
class Foo {
string x;
int y = 1;
}
void main() {
Foo f1 = new Foo(); // Good
Foo f2 = new Foo("hello"); // Good
Foo f3 = new Foo("hello", 10); // Good
}
What kind of problems are caused by this? :-)
Currently that syntax is supported for structs created as values, but not for structs created by pointer:
struct Foo {
string x;
int y = 1;
}
void main() {
Foo* f1 = new Foo(); // OK
Foo* f2 = new Foo("hello"); // Error: no constructor for Foo
Foo* f3 = new Foo("hello", 10); // Error: no constructor for Foo
}
Bye,
bearophile
More information about the Digitalmars-d
mailing list