What is the current point to empty/null associative arrays?
Regan Heath
regan at netmail.co.nz
Fri Nov 29 07:55:56 PST 2013
On Fri, 29 Nov 2013 09:51:05 -0000, Peter Alexander
<peter.alexander.au at gmail.com> wrote:
> On Friday, 29 November 2013 at 09:39:57 UTC, Cooler wrote:
>> 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.
>
> string[int]* aaToFill = someCheck ? &aa1 : &aa2;
> (*aaToFill)["A"] = 1;
Resorting to pointers = fail (for the language) I'm afraid.
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list