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.

Reply via email to