Okay, I was thinking that #add: would raise an error if the key is already present. But it doesn't and replace the value.
(Which I find a bit confusing because if the key is already present, it deletes the old value silently.)
The only method that raises an error if a key is already present seems to be Dictionary>>#newFrom:.
Maybe this commit should be edited (diff-diff):
+ ----- Method: Dictionary class>>fromKeys:values: (in category 'instance creation') ----- + fromKeys: keys values: values + + | dictionary | + self assert: [keys size = values size]. + dictionary := self new: keys size. + keys with: values do: [:key :value |
- + dictionary add: key -> value].
+ + dictionary
+ + at: key + + ifPresent: [:existing | self error: ('Duplicate key "{1}"' format: {key})] + + ifAbsentPut: value].
+ ^ dictionary!
________________________________ Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Nicolas Cellier nicolas.cellier.aka.nice@gmail.com Gesendet: Sonntag, 17. November 2019 18:37:07 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] The Inbox: Collections-ct.860.mcz
Hi Christoph, I presume that Jakob is just suggesting using (at: key put: value) rather than (add: key -> value).
Le dim. 17 nov. 2019 à 17:36, Thiede, Christoph <Christoph.Thiede@student.hpi.uni-potsdam.demailto:Christoph.Thiede@student.hpi.uni-potsdam.de> a écrit :
Thank you for the review! This was actually intended, or what would expect the following to do?
Dictionary fromKeys: 'wasda' values: '84265'
________________________________ Von: Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.orgmailto:squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Jakob Reschke <forums.jakob@resfarm.demailto:forums.jakob@resfarm.de> Gesendet: Sonntag, 17. November 2019 17:24:25 An: squeak-dev@lists.squeakfoundation.orgmailto:squeak-dev@lists.squeakfoundation.org Betreff: Re: [squeak-dev] The Inbox: Collections-ct.860.mcz
Is there a strong indication to use add: anAssociation over at:put: here? The latter is more idiomatic and does not use the implementation detail that a dictionary is made up of associations.
<commits@source.squeak.orgmailto:commits@source.squeak.org> schrieb am Fr., 15. Nov. 2019, 13:59: A new version of Collections was added to project The Inbox: http://source.squeak.org/inbox/Collections-ct.860.mcz
==================== Summary ====================
Name: Collections-ct.860 Author: ct Time: 15 November 2019, 1:58:56.418005 pm UUID: f6364e7f-08c8-694a-9060-21bc0a0c28d4 Ancestors: Collections-pre.857
Add convenience constructor for Dictionary
Dictionary fromKeys: 'wasd' values: '8426'
=============== Diff against Collections-pre.857 ===============
Item was added: + ----- Method: Dictionary class>>fromKeys:values: (in category 'instance creation') ----- + fromKeys: keys values: values + + | dictionary | + self assert: [keys size = values size]. + dictionary := self new: keys size. + keys with: values do: [:key :value | + dictionary add: key -> value]. + ^ dictionary!