Am 21.03.2011 00:55, schrieb bearophile:
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);
}
Yeah, I still like that idea ;)
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? :-)
You'd have to know the order in that the members are defined in the
class (and you may not change the order).
Just imagine
class Foo {
int bla;
int baz;
}
new Foo(42, 3); // what is bla, what is baz?
and then you decide "uh I'd prefer to have my class members ordered
alphabetically" and *bamm* all you code silently breaks.
having a this(this.bla, this.baz) {} would clearly document which
argument in the constructor belongs to which class member and the class
members ordering wouldn't matter.
Cheers,
- Daniel