Associative Array Non-null initialization

Kyle G. kyle.james.gibson at gmail.com
Tue Oct 2 15:05:39 PDT 2007


BCS wrote:
> Reply to Kyle G.,
> 
>> Hi,
>>
>> I want to declare an AA such that it's starting length is 0, yet, it
>> is not null.
>>
>> For instance:
>>
>> 1 string[int] aa;
>> 2 assert (aa.length == 0);
>> 3 assert (aa is null);
>> 4 aa[100] = "";
>> 5 aa.remove(100);
>> 6 assert (aa.length == 0);
>> 7 assert (aa !is null);
>> The above runs without error, as it should. Notice that assertions 3
>> and 7 are opposite.
>>
>> However, is there anything shorter/more efficient that I can do
>> (preferably on line 1) which would generate an AA which satisfies the
>> assertions 6 and 7?
>>
>> This appears to function in the same way:
>>
>> string[int] aa = [100:""];
>> aa.remove(100);
>> assert (aa.length == 0);
>> assert (aa !is null);
>> Thank you.
>>
> 
> its a pitty AA.remove is of type void. If it wasn't then this would work:
> 
> ([int.init:char[].init].remove(int.init))
> 
> 

I suppose you could define a remove alternative:

V[K] bremove(V,K) (ref V[K] ar, K k) {
  ar.remove(k);
  return ar;
}


More information about the Digitalmars-d-learn mailing list