On Sun, 11 Mar 2007 18:46:00 -0800, Jerome Peace <[EMAIL PROTECTED]> wrote:

However:
myCollection := nil.
or
myCollection := #() .
will clear the collection.

Since I want it empty, not gone, I'm doing this:

myCollection := OrderedCollection new.

On accessors versus raw IVars. its a matter of
programmer choice. If the data is hidden from other
classes it can be handled by using just the iVars
within the class w/o an accessor.

Yeah, I guess. I've always tried to keep the object as close to a client of itself as I can but that's a decent rule of thumb.

Your probably about ready for Kent Beck's book
"Smalltalk: best programming pattern practices." Which
will answer a lot of the questions you are about to
ask.

I didn't find it that inspiring on a browse, but I'll check it out.

If you try to do the "simplest thing that might
possibly work." Then you would probably start with the
ivars and switch over to using accessors when there
becomes a need.

I guess that works pretty painlessly.

Go reread the comment for #removeAll I believe you
will find it does not do what you wish.

Actually, it does, as long as I create an identity copy of the collection to pass as the parm.

Try:

myCollection := OrderedCollection new
        add: 4
        ; add: 3
        ; add: 2
        ; add: 1
        ; yourself.
myCollection removeAll: myCollection  .

and see what you get. See if you can figure out why.

This looks like something I've seen often in other languages, where the iterator ends up missing items because it's changing as it goes. Hard for me to believe this is a bug, but that's what it looks like to me.

        ===Blake===
_______________________________________________
Beginners mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to