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;
}}
}