On Saturday, 19 November 2016 at 13:57:26 UTC, Jonathan M Davis wrote:
On Saturday, November 19, 2016 09:46:08 Marduk via Digitalmars-d-learn wrote:
[...]

A string mixin literally puts the code there. So, doing

mixin("int n = 10");
double[n][n] m;

is identical to

int n = 10;
double[n][n] m;

except that you made the compile do the extra work of converting the string mixin to the code. String mixins really only become valuable when you start doing string manipulation rather than simply using string literals. If you want a compile-time constant, then use the enum keyword. e.g.

enum n = 10;
double[n][n] m;

And if you want the value of n to be calculated instead of being fixed, then you can even do something like

enum n = calcN();
double[n][n] m;

so long as calcN can be run at compile time.

- Jonathan M Davis

Thank you very much for taking the time to write such a detailed explanation. The first part I had already figured out.

String mixins really only become valuable when you start doing string manipulation rather than simply using string literals.

Yes. I saw some examples in the docs.

The last part is very interesting.

Reply via email to