On Wednesday, 11 October 2017 at 17:40:15 UTC, Jonathan M Davis
wrote:
On Wednesday, October 11, 2017 17:05:19 Daniel Kozak via
Digitalmars-d wrote:
so you can try to use static immutable insted of enum
Yeah. Similarly, you could just have a regular function that
you call at compile time that returns what you want (assuming
that it's not being assigned to an enum) - then if it's just
being used to generate something that you actually want to keep
around after compiling, you're not stuck with the AA continuing
to exist past compile time.
I don't know that it will ever happen, but there has been talk
of disallowing enums of anything that will allocate, because
you pretty much never want that (since it will allocate every
time it's used), and it's easy to do accidentally.
- Jonathan M Davis
Yeah I ended up making property functions that returns the AA's
with what I want.
Ex.
@property string[string] myAA() {
string[string] aa;
// ... populate aa
return aa;
}
Because then I didn't have to change any places it was used.
Since it's compile-time it shouldn't matter too much that it
might be called multiple times and generate a new AA. There seem
to be no better way to cache it other than local variables where
it's used.
I did have one enum AA I could change to a static AA since it
wasn't called during compile-time, so I guess there were some
advantages by not being able to compile with latest version; like
I wouldn't have caught that mistake if I didn't come by this.