digitalmars.D.learn - `string[] args` can't be read at compile time?
- Unazed Spectaculum (20/20) Dec 10 2017 import std.stdio;
- Adam D. Ruppe (7/8) Dec 10 2017 That should be `!exists(args[1])`. You had an extra ! in there by
- Unazed Spectaculum (3/11) Dec 10 2017 Thanks! That fixed it. I'll take it into account whenever I see
import std.stdio; import std.file; void main(string[] args) { if (args.length != 2) { writeln("usage: ./app <path-to-file>"); return; } if (!exists!(args[1])) { writefln("fatal error: %s doesn't exist", args[1]); } } Line 13 (if (!exists!(args[1]))) produces error: 'app.d(13): Error: variable args cannot be read at compile time' With 'dmd -run app.d' compilation command. I've seen another Stackoverflow post with a similar issue (https://stackoverflow.com/questions/39920780/variable-i-cannot-be-r ad-at-compile-time) but I don't believe it to be related. Any help?
Dec 10 2017
On Sunday, 10 December 2017 at 15:28:19 UTC, Unazed Spectaculum wrote:if (!exists!(args[1]))That should be `!exists(args[1])`. You had an extra ! in there by the (. Generally speaking, when there's a "cannot be read at compile time", it is because something is initialized in a static context and/or there's an extra ! in the arg list to get rid of.
Dec 10 2017
On Sunday, 10 December 2017 at 15:46:57 UTC, Adam D. Ruppe wrote:On Sunday, 10 December 2017 at 15:28:19 UTC, Unazed Spectaculum wrote:Thanks! That fixed it. I'll take it into account whenever I see any other future errors like it.if (!exists!(args[1]))That should be `!exists(args[1])`. You had an extra ! in there by the (. Generally speaking, when there's a "cannot be read at compile time", it is because something is initialized in a static context and/or there's an extra ! in the arg list to get rid of.
Dec 10 2017