Nested associative arrays

div0 div0 at sourceforge.net
Sat Nov 13 09:27:08 PST 2010


On 13/11/2010 15:49, Jacob Carlborg wrote:
> On 2010-11-13 14:56, div0 wrote:
>> On 13/11/2010 11:02, Jacob Carlborg wrote:
>>> On 2010-11-12 17:44, Ellery Newcomer wrote:
>>>> Should be. Are you having problems?
>>>>
>>>> (I don't use them much, but fwiw, it seems like tango had some
>>>> [trivial?] problems with them)
>>>>
>>>> On 11/12/2010 10:08 AM, Jacob Carlborg wrote:
>>>>> Is D supposed to be able to handle nested associative arrays ?
>>>>>
>>>>>
>>>
>>> Well, yes. The following code:
>>>
>>> module main;
>>>
>>> void main ()
>>> {
>>> auto tree = ["" : ["" : ""]];
>>> }
>>>
>>> Using DMD 1.065 results in:
>>>
>>> Assertion failed: (0), function toExpression, file init.c, line 437.
>>>
>> That's static initialisation not an AA.
>>
>> alias string[char] innerAA;
>> alias innerAA[int] outerAA;
>>
>> outerAA x;
>> innerAA t;
>>
>> x[2] = t;
>>
>> auto y = x[2];
>> y['c'] = "cat";
>>
>> I've no idea what'll happen if you start passing it around though.
>
> How about "associative array literal" then? Regardless of what you call
> it I shouldn't get an assertion failure.
>

True. It's been fixed in dmd2 though, you get:

Error: Integer constant expression expected instead of ""

When it's auto the compiler thinks you are doing static initialisation 
of a flat array, not an AA. You have to do what Ellery said.

-- 
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk


More information about the Digitalmars-d-learn mailing list