As of 2023, we still cannot declaring a constant string[char] AA?

Steven Schveighoffer schveiguy at gmail.com
Wed May 17 13:48:53 UTC 2023


On 5/16/23 7:17 PM, mw wrote:
> Hi,
> 
> I just run into this problem again:
> 
> https://stackoverflow.com/questions/26861708/what-is-the-syntax-for-declaring-a-constant-stringchar-aa
> 
> So, the solution still is to use:
> ```
> static this () {
>    ...
> }
> ```
> 
> What happened to this comments:
> """
> It should be noted that this restriction will eventually go away, once 
> there is a solid library implementation of associative arrays. There is 
> currently work in progress to this effect, which seems to be nearing 
> completion. –
> Meta  Nov 14, 2014 at 17:41
> """
> 
> Still not there yet, after ~10 years?

Yep.

I have a library solution: https://code.dlang.org/packages/newaa

You can declare a `Hash!(char, string)` in module space, and then use it 
as an AA later.

However, it needs to not be const. The Hash type does not set itself up 
as an AA doppelganger until you call `asAA` on it, which means it needs 
to set up some internal things, and therefore needs to be mutable. I 
think I can make a method that does this, so you can use `const 
Hash!(char, string) = [ ... ]`, but it still can't change the type to an 
actual AA (the compiler won't let that work).

Wow, over a year since I did anything on it. Probably should tinker a 
bit more.

-Steve


More information about the Digitalmars-d-learn mailing list