On Monday, 27 August 2018 at 11:56:08 UTC, Kamil Koczurek wrote:
Mixins seem to be an overkill here. Maybe something like this
would suffice:
data[index + 1 .. index + 5].map!(k => k[0]).array == "&&&&"
Here there is dynamic code, with memory allocs.
I found solution:
-----------------------
import std.meta;
import std.traits;
import std.stdio;
import std.array : join;
import std.algorithm.iteration : map;
import std.conv : to;
import std.range;
string qaz(alias args, alias index, ubyte count)()
{
return iota(1, count).map!(j => args.stringof ~ '[' ~
index.stringof ~ '+' ~ j.to!string ~ "][0] == '&'").join("||");
}
void main()
{
ushort index = 1;
string[] args = ["&second", "123", "&qaz", "true", "&first",
"77", "&value"];
if(index + 1 >= args.length || mixin(qaz!(args, index, 4)))
{
writeln(qaz!(args, index, 4)());
}
}
-----------------------