[squeak-dev] The Inbox: Collections-ct.860.mcz

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Sun Nov 17 18:17:44 UTC 2019


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 at lists.squeakfoundation.org> im Auftrag von Nicolas Cellier <nicolas.cellier.aka.nice at 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 at student.hpi.uni-potsdam.de<mailto:Christoph.Thiede at 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 at lists.squeakfoundation.org<mailto:squeak-dev-bounces at lists.squeakfoundation.org>> im Auftrag von Jakob Reschke <forums.jakob at resfarm.de<mailto:forums.jakob at resfarm.de>>
Gesendet: Sonntag, 17. November 2019 17:24:25
An: squeak-dev at lists.squeakfoundation.org<mailto:squeak-dev at 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 at source.squeak.org<mailto:commits at 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!



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191117/780aa481/attachment.html>


More information about the Squeak-dev mailing list