On Friday, 16 June 2023 at 01:18:25 UTC, zjh wrote:
On Friday, 16 June 2023 at 01:00:05 UTC, Steven Schveighoffer
wrote:
B b = B.make(); // call factory function
-Steve
Thank you for your tip.
If could simplify it a bit more, it would be even better. It's
really uncomfortable without `this()`.
One could define a static opCall in his aggregate. It's still a
factory function, but one might prefer the syntax a bit more.
```d
immutable defaultName = "John";
struct Man {
static auto opCall() {
typeof(this) this_;
this_.name = defaultName;
return this_;
}
string name;
}
auto m = Man();
assert(m.name == defaultName);
```
Do note that one cannot simultaneously have a constructor and a
static opCall, even if their parameters differ.