Re: Set global immutables from main/getopt?
On Wednesday, 29 January 2014 at 00:28:29 UTC, Meta wrote: You can also use the Github Gist feature for displaying code, can't you? But you'd need a github account for that, won't you? :)
Re: Set global immutables from main/getopt?
One can always turn global into pointer to immutable - it will preserve most benefits but can be always replaced with differently initialized one.
Set global immutables from main/getopt?
I thought it'd be a good idea to set global immutables from args passed to main(). When I do this: import io = std.stdio; immutable string abc; void foo() { io.writeln(abc); } void main(string[] args) { abc = args[1]; foo(); } ...I get the compiler error: Error: can only initialize const member abc inside constructor. When I do this: import io = std.stdio; void foo() { io.writeln(abc); } void main(string[] args) { immutable string abc = args[1]; foo(); } ...I get the compiler error: Error: undefined identifier abc. Is there any workaround, or am I attempting a stupidity/impossibility? Thanks. Andrew
Re: Set global immutables from main/getopt?
On Tuesday, 28 January 2014 at 17:11:43 UTC, Andrew Klaassen wrote: Naturally, initialize them in constructor :) http://dpaste.dzfl.pl/620e8c61
Re: Set global immutables from main/getopt?
On Tue, 28 Jan 2014 12:27:02 -0500, Stanislav Blinov stanislav.bli...@gmail.com wrote: On Tuesday, 28 January 2014 at 17:11:43 UTC, Andrew Klaassen wrote: Naturally, initialize them in constructor :) http://dpaste.dzfl.pl/620e8c61 That being said, it *could* be done, since the runtime has access to the command line args. But the runtime would have to provide access to those parameters. But you'd have to do it in a static constructor. -Steve
Re: Set global immutables from main/getopt?
On Tuesday, 28 January 2014 at 18:30:37 UTC, Steven Schveighoffer wrote: On Tue, 28 Jan 2014 12:27:02 -0500, Stanislav Blinov stanislav.bli...@gmail.com wrote: http://dpaste.dzfl.pl/620e8c61 That being said, it *could* be done, since the runtime has access to the command line args. But the runtime would have to provide access to those parameters. But you'd have to do it in a static constructor. Ahem. There was a link to dpaste :D
Re: Set global immutables from main/getopt?
On Tue, 28 Jan 2014 13:41:24 -0500, Stanislav Blinov stanislav.bli...@gmail.com wrote: On Tuesday, 28 January 2014 at 18:30:37 UTC, Steven Schveighoffer wrote: On Tue, 28 Jan 2014 12:27:02 -0500, Stanislav Blinov stanislav.bli...@gmail.com wrote: http://dpaste.dzfl.pl/620e8c61 That being said, it *could* be done, since the runtime has access to the command line args. But the runtime would have to provide access to those parameters. But you'd have to do it in a static constructor. Ahem. There was a link to dpaste :D Oops! I glossed over that :) I thought the example just showed how a static constructor was required to initialize, I didn't see the access to the program args. -Steve
Re: Set global immutables from main/getopt?
On Tuesday, 28 January 2014 at 19:02:41 UTC, Stanislav Blinov wrote: On Tuesday, 28 January 2014 at 18:56:35 UTC, Ali Çehreli wrote: On a side note, dpaste is not associated with newsgroups. It can disappear at any time in the future. I like seeing and showing code in message bodies both for convenience and future availability. :) Awww, but it is so much more convenient. No spurious linebreaks, nice syntax highlighting, built-in compiler... :P But I agree, sometimes it's a real pain when you've searching for something and all you find is dead links. You can also use the Github Gist feature for displaying code, can't you?