[squeak-dev] The Trunk: Collections-cmm.785.mcz

Chris Muller asqueaker at gmail.com
Fri Apr 13 17:06:25 UTC 2018


#do: is currently the only method which any subclass of Collection is
required to implement in order to inherit all of the other behaviors.
#at:, et al, are "direct access" methods which are not required for
Collections and, in cases like Set, not even *supported*, so we would
probably need to duplicate various #shouldNotImplement's overrides in
Set and possibly other subclasses.  That would leave the superclass
saying, "subclassResponsibility" and the subclasses saying,
"shouldNotImplement", which feels conflicted.  I think is one of those
cases where a little duplication of the #at: method(s) is worth it so
we don't have to explicitly delete the behavior.


On Thu, Apr 12, 2018 at 12:15 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> Hi Chris,
>
> On Fri, Mar 30, 2018 at 3:57 PM, <commits at source.squeak.org> wrote:
>>
>> Chris Muller uploaded a new version of Collections to project The Trunk:
>> http://source.squeak.org/trunk/Collections-cmm.785.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Collections-cmm.785
>> Author: cmm
>> Time: 30 March 2018, 5:57:37.727038 pm
>> UUID: 37e9870a-5379-4185-8538-fada710dad5d
>> Ancestors: Collections-eem.784
>>
>> Add #at:ifPresent:ifAbsent: for API compatibility with other kinds of
>> directly-accessible Collections.
>>
>> =============== Diff against Collections-eem.784 ===============
>>
>> Item was added:
>> + ----- Method: SequenceableCollection>>at:ifPresent:ifAbsent: (in
>> category 'accessing') -----
>> + at: index ifPresent: elementBlock ifAbsent: exceptionBlock
>> +       "Answer the value of elementBlock on the element at position
>> index.  If I do not contain an element at index, answer the result of
>> evaluating exceptionBlock."
>> +       ^ elementBlock value:
>> +               (self
>> +                       at: index
>> +                       ifAbsent: [ ^ exceptionBlock value ])!
>
>
> I'm thinking that this sits better in Collection as a default
> implementation.  I note that also we don't have a subclass responsibility
> implementations of at:ifAbsent: (and maybe others) in Collection.
> _,,,^..^,,,_
> best, Eliot
>
>
>


More information about the Squeak-dev mailing list