digitalmars.D.learn - Const module globals and static this()
- H. S. Teoh (15/15) Feb 15 2012 Why doesn't this compile?
- Timon Gehr (17/29) Feb 15 2012 Do it like this:
Why doesn't this compile? const int map[dstring]; static this() { map["abc"] = 123; } It seems utterly pointless to be able to declare a const associative array yet be unable to initialize it (trying to initialize it with an AA literal doesn't work, the compiler complains the literal is non-constant). AA's are a very welcome inclusion in D (IMNSHO, no modern programming language worth its salt should omit AA's), but they do have some aspects that are utterly annoying. T -- Food and laptops don't mix.
Feb 15 2012
On 02/15/2012 07:29 PM, H. S. Teoh wrote:Why doesn't this compile? const int map[dstring]; static this() { map["abc"] = 123; } It seems utterly pointless to be able to declare a const associative array yet be unable to initialize it (trying to initialize it with an AA literal doesn't work, the compiler complains the literal is non-constant).Do it like this: immutable int[dstring] map; static this(){ map = ["abc": 123]; } Or like that: immutable int[dstring] map; static this(){ auto foo()pure{ int[dstring] r; r["abc"]=123; return r; } map = foo(); }AA's are a very welcome inclusion in D (IMNSHO, no modern programming language worth its salt should omit AA's), but they do have some aspects that are utterly annoying.Those aspects will go away once they can be initialized at compile time.
Feb 15 2012