Я пытаюсь использовать mixin
в следующем коде:
import std.stdio;
import std.file;
void main(string[] args){
if (args.length != 2) {
writeln("usage: ./app < number expression >");
return;
}
else {
// following statements work ok:
writeln(args);
writeln(args.length);
writeln(args[1]);
// following 2 statements do not work; same error:
//mixin("writeln("~args[1]~");"); // Error: variable args cannot be read at compile time
writeln(mixin(args[1])); // Error: variable args cannot be read at compile time
}
}
Но я получаю следующую ошибку:
$ rdmd soq_mycalc.d
soq_mycalc.d(17): Error: variable args cannot be read at compile time
Failed: ["/usr/bin/dmd", "-v", "-o-", "soq_mycalc.d", "-I."]
Где проблема и как ее можно исправить?
Редактировать: я хочу вызвать эту программу с аргументом: "2 + 2" и хочу, чтобы программа рассчитала ее.
Следующее также не работает:
char[] mainarg = args[1].dup;
writeln(mixin(mainarg)); // Error: variable args cannot be read at compile time