On 6 December 2010 23:52, jaayer <[email protected]> wrote: > > > > > ---- On Sun, 05 Dec 2010 12:44:46 -0800 jaayer wrote ---- > >>Is anyone else bother[ed] by this inconsistency? > > Apparently not. Well, I uploaded two packages to the PharoInbox. One adds > #remove: and #remove:ifAbsent: to Dictionary and updates SmallDictionary's > implementations of those messages to return the same value - the association > removed - rather than their current behavior of #remove: returning self (no > explicit return value) and #remove:ifAbsent: returning the key of the removed > association. The second package adds #testRemove and #testRemoveIfAbsent to > DictionaryTest (through a trait). > >
Hello, jaayer. The point about Dictionary inconsistency was raised multiple times before. I was among ones of those who did that couple of years ago. What can i say? While it is much better to have consistency, in fact it doesn't really changes much. I don't think that #remove: in a form you proposed will be any userful. I would really keep it simply #shouldNotImplement , because it is unclear what is a least surprising behavior of this method for Dictionary. One might argue, that its more userful to make it same as #removeKey:, other one could point that its should be symmetrical to #add: , but hey, then #do: should be also symmetrical to #add: , isnt? And so it should iterate over associations , not just values. So, it is a can of worms, once you open it , you can never finish the endless discussions :) It is just works in a way how we like (defined). It is like an imaginary numbers in math where sqrt(-1) == i and basta :) -- Best regards, Igor Stasenko AKA sig.
