The Trunk: Collections-mt.833.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Collections-mt.833.mcz

commits-2
Marcel Taeumel uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-mt.833.mcz

==================== Summary ====================

Name: Collections-mt.833
Author: mt
Time: 13 May 2019, 9:46:28.73801 am
UUID: 44057ed3-9b55-0b49-8472-71d5c3fdbeeb
Ancestors: Collections-mt.832

Second iteration of #take: (and #any:). #any: relates to #anyOne and thus signals an error if the collection is not large enough. #take: uses #any: but accounts for smaller collections.

=============== Diff against Collections-mt.832 ===============

Item was added:
+ ----- Method: CharacterSet>>any: (in category 'accessing') -----
+ any: numberOfElements
+
+ ^ self any: numberOfElements as: Array!

Item was added:
+ ----- Method: CharacterSet>>any:as: (in category 'accessing') -----
+ any: numberOfElements as: aClass
+
+ self canBeEnumerated
+ ifTrue: [^ super any: numberOfElements as: aClass]
+ ifFalse: [self shouldNotImplement]!

Item was removed:
- ----- Method: CharacterSet>>take: (in category 'accessing') -----
- take: n
-
- self shouldNotImplement.!

Item was added:
+ ----- Method: Collection>>any: (in category 'accessing') -----
+ any: numberOfElements
+
+ ^ self any: numberOfElements as: self species!

Item was added:
+ ----- Method: Collection>>any:as: (in category 'accessing') -----
+ any: numberOfElements as: aClass
+ "Enumerate this colleciton and return the specified number of elements. Signals an error if this collection has not enough elements."
+
+ | index result |
+ index := 0.
+ result := aClass new: numberOfElements.
+
+ result fillFrom: self with: [:each |
+ (index := index + 1) > numberOfElements
+ ifTrue: [^ result]
+ ifFalse: [each]].
+
+ index = numberOfElements
+ ifFalse: [self error: 'Not enough elements in this collection.'].
+
+ ^ result!

Item was changed:
  ----- Method: Collection>>take: (in category 'accessing') -----
+ take: maxNumberOfElements
+ "Returns maxNumberOfElements as a new collection or less if the collection is not large enough."
- take: n
- "Enumerate this collection and return the first n elements or less."
 
+ ^ self any: (maxNumberOfElements min: self size)!
- | index result |
- index := 1.
- result := self species new: (n min: self size).
- self associationsDo: [:each |
- result add: each.
- (index := index + 1) > n ifTrue: [^ result]].
- ^ result!

Item was added:
+ ----- Method: SequenceableCollection>>any: (in category 'accessing') -----
+ any: numberOfElements
+
+ ^ self first: numberOfElements!

Item was removed:
- ----- Method: SequenceableCollection>>take: (in category 'accessing') -----
- take: n
-
- ^ self first: (n min: self size)!

Item was added:
+ ----- Method: Stream>>any: (in category 'accessing') -----
+ any: numberOfElements
+ "See Collection protocol."
+
+ ^ self next: numberOfElements!

Item was changed:
  ----- Method: Stream>>take: (in category 'accessing') -----
+ take: maxNumberOfElements
+ "See Collection protocol."
+
+ ^ self any: maxNumberOfElements!
- take: n
-
- ^ self next: n!