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