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.