On Sunday, 9 February 2020 at 00:57:05 UTC, realhet wrote:
On Sunday, 9 February 2020 at 00:41:12 UTC, realhet wrote:
On Sunday, 9 February 2020 at 00:27:21 UTC, Adam D. Ruppe wrote:

Using what I've learned:

class A{
  int i=42;

  void init(){ // reInitialize class fields
    alias T = typeof(this);
mixin([FieldNameTuple!T].map!(n => n~"=(new T)."~n~";").join);
  }

}

(I also like to live dangerously with string mixins :D)

Tip: don't name a member function `init`, since it will conflict with the built-in `.init` property.

Here's a version without string mixins, for comparison:

    void initialize() {
        static foreach (i, field; typeof(this).tupleof) {{
            // force compile-time evaluation
            enum initValue = (new typeof(this)).tupleof[i];
            field = initValue;
        }}
    }

Reply via email to