On Sunday, January 08, 2012 12:35:27 simendsjo wrote:
> On 08.01.2012 12:18, Jonathan M Davis wrote:
> > On Sunday, January 08, 2012 11:33:51 simendsjo wrote:
> >> I was thinking it could be a shorthand for the following:
> >> 
> >> auto item = key in aa;
> >> if (item) key.remove(key);
> > 
> > I take it that you then intend to use item after that? I'm not sure that
> > item is actually valid at that point. It points to memory which _was_
> > inside of aa but may or may not be now, depending on the AA
> > implementation, and it may or may not be reused by aa. Because it's on
> > the GC heap, the memory itself won't be invalid, but the memory could
> > be reused by the AA for another element, depending on its
> > implementation. If you're lucky, it's memory that's just sitting on the
> > GC heap and now unrelated to the AA, but I wouldn't bet on it.
> > 
> > I would _not_ consider that to be good code. It's just asking for
> > trouble.
> > 
> > - Jonathan M Davis
> 
> Ah.. This should be documented in http://dlang.org/hash-map.html
> The only documentation for remove is:
> "
> Particular keys in an associative array can be removed with the remove
> function:
>      b.remove("hello");
> "

I confess that it's one of those things that I would have thought would have 
been fairly obvious, but it certainly wouldn't hurt to add it. The 
documentation does tend to be sparse of details in any case.

- Jonathan M Davis

Reply via email to