On Tuesday, 7 May 2024 at 00:10:27 UTC, Andy Valencia wrote:
I had a set of default error messages to go with error code numbers, and did something along the lines of:

string[uint] error_text = [
    400: "A message",
    401: "A different message"
];

and got "expression .... is not a constant"

I eventually found this discussion:
    https://issues.dlang.org/show_bug.cgi?id=6238

I understand that it's problematic, but a message which makes it clearer that compile-time initialization of global AA's are not supported? Because it cost me about a half hour trying to figure out what I was doing wrong.

(My workaround was to initialize the data structure once during app startup.)

Based on what I understood and that issue, I think it was fixed:

import std.stdio;

string[uint] aa1 = [1:"ABC",2:"DEF"];

void main(){
    auto aa2 = ['A':1,'B':2];

    writeln(aa1[1]);
    writeln(aa1[2]);
    writeln(aa2['A']);
    writeln(aa2['B']);
}

Prints:

ABC
DEF
1
2

Matheus.

Reply via email to