[Newbies] How to empty a collection?
goran at krampe.se
goran at krampe.se
Tue Feb 19 17:11:49 UTC 2008
Hi!
Reinout Heeck <reinz at desk.org> wrote:
> goran at krampe.se wrote:
> > The *normal* way people usually do it thoiugh is to *not depend on the
> > identity* of the Collection - different objects should typically not
> > share the same Collection. And if you don't share - then the easy way
> > out is to just do:
> >
> > myCollection := OrderedCollection new "or whatever class you use"
> >
> > ...in order to empty it.
>
>
> A word of caution: identity should be preserved in the 'normal' case,
I agree. While I still think relying too much on identities is a
dangerous practice.
> replacing with another collection should be regarded as the exceptional
> case. Your assertion that "different objects should typically not share
> the same Collection." is only valid in limited cases.
Well, I still stand by it as a general "nice rule". :)
> I'm talking from my experience with building mvc-based apps on
> VisualWorks. Code needs to be decoupled, ie 'model' objects and
> collections should not know about the UI's that are coupled to them,
> this is achieved with the various dependency mechanisms available in VW.
I know, I used VW back in the 2.5-3.x days and while I first thought the
adapter-frenzy was cool I later also started thinking it was
over-engineered as hell. ;)
> Changing identity of the collections will break this paradigm big time
> (regardless of whether the dependents are managed in a global dictionary
> or by the collection itself).
Yes, if your adapters/UI components etc cling onto the collections
themselves, then yes, you will be bitten big time. I still think that
paradigm is fishy - but again, I only presented the way people
*typically* go about this thing - I still of course would like to
preserve identity and introduce #removeAll. It is better in all
respects.
If the *intent* is to "remove all elements" - then the message should
state exactly that intent. Doing stuff like "aColl copy do: [:each |
aColl remove: each]" is just plain dumb and silly, though it would
probably qualify as a default implementation in class Collection. :)
regards, Göran
More information about the Squeak-dev
mailing list
|