[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
|