Nested associative arrays

Jacob Carlborg doob at me.com
Sun Nov 14 05:19:28 PST 2010


On 2010-11-13 18:27, div0 wrote:
> 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.

Well, that's no fun. How many are using the Static Initialization of 
Static Arrays syntax: 
http://www.digitalmars.com/d/2.0/arrays.html#static-init-static ?

-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list