<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-03-08 21:18 GMT+01:00 Nicolas Cellier <span dir="ltr">&lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">2016-03-08 21:06 GMT+01:00  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Levente Uzonyi uploaded a new version of Collections to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Collections-ul.679.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/trunk/Collections-ul.679.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Collections-ul.679<br>
Author: ul<br>
Time: 8 March 2016, 5:24:30.010047 pm<br>
UUID: 9f4b6193-4632-48c7-a99f-ee37923bf28b<br>
Ancestors: Collections-eem.678<br>
<br>
#occurrencesOf: revamp:<br>
- optimized Bag&#39;s implementation<br>
- added optimized versions to ArrayedCollection, String and ByteArray<br>
<br>
=============== Diff against Collections-eem.678 ===============<br>
<br>
Item was added:<br>
+ ----- Method: ArrayedCollection&gt;&gt;occurrencesOf: (in category &#39;testing&#39;) -----<br>
+ occurrencesOf: anObject<br>
+       &quot;Answer how many of the receiver&#39;s elements are equal to anObject. Optimized version.&quot;<br>
+<br>
+       | tally |<br>
+       tally := 0.<br>
+       1 to: self size do: [ :index |<br>
+               (self at: index) = anObject ifTrue: [ tally := tally + 1 ] ].<br>
+       ^tally!<br>
<br>
Item was changed:<br>
  ----- Method: Bag&gt;&gt;occurrencesOf: (in category &#39;testing&#39;) -----<br>
+ occurrencesOf: anObject<br>
+       &quot;Answer how many of the receiver&#39;s elements are equal to anObject. Optimized version.&quot;<br>
- occurrencesOf: anObject<br>
-       &quot;Refer to the comment in Collection|occurrencesOf:.&quot;<br>
<br>
+       ^contents at: anObject ifAbsent: 0!<br>
-       (self includes: anObject)<br>
-               ifTrue: [^contents at: anObject]<br>
-               ifFalse: [^0]!<br>
<br>
Item was added:<br>
+ ----- Method: ByteArray&gt;&gt;occurrencesOf: (in category &#39;as yet unclassified&#39;) -----<br>
+ occurrencesOf: anObject<br>
+       &quot;Answer how many of the receiver&#39;s elements are equal to anObject. Optimized version.&quot;<br>
+<br>
+       | tally |<br>
+       anObject isInteger ifFalse: [ ^0 ].<br>
+       anObject negative ifTrue: [ ^0 ].<br>
+       anObject &gt; 255 ifTrue: [ ^0 ].<br>
+       tally := 0.<br>
+       1 to: self size do: [ :index |<br>
+               (self at: index) = anObject ifTrue: [ tally := tally + 1 ] ].<br>
+       ^tally!<br>
<br>
Item was added:<br>
+ ----- Method: String&gt;&gt;occurrencesOf: (in category &#39;testing&#39;) -----<br>
+ occurrencesOf: anObject<br>
+       &quot;Answer how many of the receiver&#39;s elements are equal to anObject. Optimized version.&quot;<br>
+<br>
+       | tally |<br>
+       anObject isCharacter ifFalse: [ ^0 ].<br>
+       tally := 0.<br>
+       1 to: self size do: [ :index |<br>
+               (self at: index) == anObject ifTrue: [ tally := tally + 1 ] ].<br>
+       ^tally!<br></blockquote><div><br></div></div></div><div>it could have been<span class=""><br><br>
+       anObject isCharacter ifFalse: [ ^0 ].<br></span></div><div>
+       ^super occurrencesOf: anObject<br><br></div><div>and/or in ByteString<span class=""><br>
+       anObject isCharacter ifFalse: [ ^0 ].<br></span>
+       anObject asInteger &lt; 255 ifFalse: [ ^0 ].<br></div><div>         snip...<br></div></div><br></div></div></blockquote><div>Hem<br><span class=""><br></span>
+       anObject asInteger &lt;= 255 ifFalse: [ ^0 ]. <br></div><div>or<span class=""><br></span>
+       anObject asInteger &lt; 256 ifFalse: [ ^0 ].<br></div><div>or<span class=""><br></span>
+       anObject asInteger &gt; 255 ifTrue: [ ^0 ].</div></div><br></div></div>