--- a/Collection.st Mon Oct 26 14:27:03 2009 +0100
+++ b/Collection.st Mon Oct 26 15:45:40 2009 +0100
@@ -228,7 +228,6 @@
^ self withSize:n
! !
-
!Collection class methodsFor:'Signal constants'!
emptyCollectionSignal
@@ -333,6 +332,35 @@
"
!
+gather:aBlock
+ "return an Array,
+ containing all elements as returned from applying aBlock to each element if the receiver,
+ where the block returns a collection of to-be-added elements.
+ This could also be called: collectAllAsArray:"
+
+ ^ self gather:aBlock as:Array
+
+ "
+ (Set withAll:#(10 20 30 10 20 40)) gather:[:el | Array with:el with:el * 2]
+ "
+!
+
+gather:aBlock as:aClass
+ "return an instance of the collection-class aClass,
+ containing all elements as returned from applying aBlock to each element if the receiver.
+ where the block returns a collection of to-be-added elements.
+ This could also be called: collectAll:as:"
+
+ ^ aClass streamContents:[:s |
+ self do: [:ea | s nextPutAll: (aBlock value: ea)]
+ ]
+
+ "
+ (Set withAll:#(10 20 30 10 20 40)) gather:[:el | Array with:el with:el * 2] as:OrderedCollection
+ (Set withAll:#(10 20 30 10 20 40)) collectAll:[:el | Array with:el with:el * 2]
+ "
+!
+
groupBy:keyBlock having:selectBlock
"Like in SQL operation - Split the recievers contents into collections of
elements for which keyBlock returns the same results, and return those
@@ -402,7 +430,6 @@
].
! !
-
!Collection methodsFor:'accessing'!
anElement
@@ -3560,11 +3587,11 @@
!Collection class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.233 2009-10-19 10:21:32 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.234 2009-10-26 14:45:40 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.233 2009-10-19 10:21:32 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.234 2009-10-26 14:45:40 cg Exp $'
! !
Collection initialize!