On Saturday, 29 January 2022 at 21:24:09 UTC, mesni wrote:
> static foreach(name; ["boo", "foo"]){
string file_#name = readText(name~".txt");
string file_#name#_info = readText(name~".meta");
auto ##name = file_#name#_info.parseInfoFile;
}
writeln(file_boo);
writeln(boo);
writeln(file_foo_info);
To make it easier to read/write code in D, I would introduce new mixins. These mixins can only represent identifiers. Also, the advantage of such mixins, the parser and semantic analysis will be able to detect some errors before the code is completely "opened". Also, I think they can speed up compilation.
I believe a DIP would be necessary, but to be honest I don't see a reason for this.
You can just do this which isn't really much less readable.
static foreach (name; ["boo", "foo"])
{
mixin(`string file_%1$s = readText("%1$s.txt");`.format(name));
}
writeln(file_boo);
writeln(file_foo);
And if D ever gets interpolated strings then the whole format can be removed and it could probably become something like this:
static foreach (name; ["boo", "foo"])
{
mixin(i`string file_$name = readText("$name.txt");`);
}
writeln(file_boo);
writeln(file_foo);
So personally I don't see a reason for your suggestion to be added.
I think it's just going to introduce more complexity than it's worth.