On 14/03/2019 15:52, H. S. Teoh via Digitalmars-d-learn wrote:
On Thu, Mar 14, 2019 at 03:22:52PM +0100, spir via Digitalmars-d-learn wrote:
https://dlang.org/spec/hash-map.html#static_initialization:

immutable long[string] aa = [
   "foo": 5,
   "bar": 10,
   "baz": 2000
];

==> Error: non-constant expression `["foo":5L, "bar":10L, "baz":2000L]`

Also: I don't understand the error message:
* What is non-constant in the *expression*?
* And why should it be constant at all?
(Removing "immutable" does not help...)
[...]

It's a well-known limitation.  The workaround is:

        immutable long[string] aa;
        static this() {
                aa = [
                        "foo" : 5,
                        ...
                ];
        }

All right! No language has to be perfect... (I'm joking). But the doc (the language ref for the matter) should definitely say what you just explained above, shouldn't they? I actually think clearly stating limitations is a +++. (Like an industry company that does not make perfect product but has great client support.)
diniz

Reply via email to