On Saturday, 4 February 2012 at 06:45:08 UTC, H. S. Teoh wrote:
On Fri, Feb 03, 2012 at 10:18:18PM -0800, H. S. Teoh wrote:
Why does the following code give a compiler error?
static int[string] table = ["abc":1, "def":2, "ghi":3];
Error message is:
prog.d:3: Error: non-constant expression
["abc":1,"def":2,"ghi":3]
How is a literal non-constant?
[...]
Ugh. Just found this:
http://d.puremagic.com/issues/show_bug.cgi?id=6238
Further testing shows that assoc array literals can't be used
outside of
function scope at all, for example:
// (in package scope)
auto hash = [ "abc":1, "def":2, "ghi":3 ];
// Error: non-constant expression ["abc":1,"def":2,"ghi":3]
Seems like a pretty nasty bug to me.
T
I would just like to add a vote for using assoc array literals
outside of function scope. They are a handy way to represent
data, and often data needs to be defined in other scopes.