What is the current point to empty/null associative arrays?
Cooler
kulkin at hotbox.ru
Fri Nov 29 01:39:56 PST 2013
On Friday, 29 November 2013 at 08:48:03 UTC, Chris Cain wrote:
> On Friday, 29 November 2013 at 08:32:12 UTC, Cooler wrote:
>> ...
>
> Try making fill array look more like this:
>
> void fillArray(ref string[int] a) { a[10] = "A"; }
>
> The issue is that an array (and/or associative array) is a
> value type. Basically, you can look at it as a struct with a
> pointer (and some extra info). If you don't pass it as a ref
> then reallocations (such as what happens when you add an item
> to an empty AA) will cause the two to not point to the same
> information anymore.
Adding "ref" is not an exit. I show this example only for
simplicity. In my real example I have to fill different AA base
on condition:
string[int] aa1, aa2;
...
auto aaToFill = someCheck ? aa1 : aa2;
// Then do something with aaToFill
If aa1 is empty it will never be filled.
More information about the Digitalmars-d
mailing list