A new version of Collections was added to project The Inbox:
http://source.squeak.org/inbox/Collections-ct.850.mcz ==================== Summary ==================== Name: Collections-ct.850 Author: ct Time: 15 August 2019, 12:57:02.047584 am UUID: a8581084-5210-3747-8b96-791b0458f52f Ancestors: Collections-fn.847 Add #collectAll:, which performs a collector on each simply nested element =============== Diff against Collections-fn.847 =============== Item was added: + ----- Method: Collection>>collectAll: (in category 'enumerating') ----- + collectAll: aBlock + "Loop over all elements of the receiver which must be collections + and for each simply nested element, evaluate aBlock. Collect the + resulting values into a set. Return the set." + + | result | + result := Set new. + self + collect: aBlock + thenDo: [:collection | result addAll: collection]. + ^ result! |
I don't see why the elements of the receiver must be collections. The result of the block must be a collection. Do the results differ between the following two expressions? aCollection collectAll: [:each | ...]. (aCollection gather: [:each | ...]) asSet. Am Do., 15. Aug. 2019 um 00:57 Uhr schrieb <[hidden email]>: A new version of Collections was added to project The Inbox: |
Thank you for the hint! I was not aware of #gather:, so #collectAll: does not really add value. :) Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Donnerstag, 15. August 2019 02:07:07 An: [hidden email] Betreff: Re: [squeak-dev] The Inbox: Collections-ct.850.mcz I don't see why the elements of the receiver must be collections. The result of the block must be a collection. Do the results differ between the following two expressions?
aCollection collectAll: [:each | ...].
(aCollection gather: [:each | ...]) asSet.
Am Do., 15. Aug. 2019 um 00:57 Uhr schrieb <[hidden email]>:
A new version of Collections was added to project The Inbox:
Carpe Squeak!
|
Just one another idea, could we maybe introduce #gather:as:, analogous to #collect:as:?
gather: aBlock as: aClass
^ (aClass inheritsFrom: SequenceableCollection)
ifTrue: [aClass streamContents: [:stream |
self do: [:ea | stream nextPutAll: (aBlock value: ea)]]]
ifFalse: [(self gather: aBlock as: Array) as: aClass]
Best, Christoph Von: Squeak-dev <[hidden email]> im Auftrag von Thiede, Christoph
Gesendet: Donnerstag, 15. August 2019 02:20:55 An: [hidden email] Betreff: Re: [squeak-dev] The Inbox: Collections-ct.850.mcz Thank you for the hint! I was not aware of #gather:, so #collectAll: does not really add value. :) Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Donnerstag, 15. August 2019 02:07:07 An: [hidden email] Betreff: Re: [squeak-dev] The Inbox: Collections-ct.850.mcz I don't see why the elements of the receiver must be collections. The result of the block must be a collection. Do the results differ between the following two expressions?
aCollection collectAll: [:each | ...].
(aCollection gather: [:each | ...]) asSet.
Am Do., 15. Aug. 2019 um 00:57 Uhr schrieb <[hidden email]>:
A new version of Collections was added to project The Inbox:
Carpe Squeak!
|
Hmm... one could implement a gather-version of #fillFrom:with: and use that in #gather:as:? :-) Best, Marcel
|
Something like this? :)
gather: aBlock as: aClass
^ (aClass new: self size) fillAllFrom: self with: aBlock
fillAllFrom: aCollection with: aBlock
"Evaluate aBlock with each of aCollections's elements as the argument.
Collect the resulting values into self. Answer self."
aCollection do: [ :each |
self addAll: (aBlock value: each) ]
Not sure how we could speed up things by overriding #fillAllFrom:with: analogously to #fillFrom:with: in Dictionary & ArrayedCollection. Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 15. August 2019 16:42:21 An: gettimothy via Squeak-dev Betreff: Re: [squeak-dev] The Inbox: Collections-ct.850.mcz
Hmm... one could implement a gather-version of #fillFrom:with: and use that in #gather:as:? :-)
Best,
Marcel
Carpe Squeak!
|
Free forum by Nabble | Edit this page |