Hi all!
"Andrew C. Greenberg" werdna@mucow.com wrote:
On Wednesday, September 11, 2002, at 07:31 PM, Lex Spoon wrote:
"Richard A. O'Keefe" ok@cs.otago.ac.nz wrote: [... inline the assertions, too ...]
That's an interesting way to look at the situation, but do note that most Smalltalkers will be suprised to find those assertions or corrections in removeAll:. Most fooAll: methods just do: on the argument and foo: each element, and have no particular protection against #foo: modifying the argument.
What is this last statement based on? Is it the Squeak image? Using the MethodFinder and looking at all methods with "all:" I can actually not find many methods that " just do: on the argument and foo: each element"...
The only ones I found (a cursory look) where:
Collection>>addAll: Collection>>removeAll: CompositeEvent>>addAll: POSimplePolygon>>addAll:
And I also found that OrderedCollection>>addAll: and SortedCollection>>addAll: does NOT do that! Of course, what they do is equivalent to "just do: and foo:" but it is still different code.
Further I found quite a lot of methods named "somethingAll:" but the only thing I can see that they have in common is that they take an argument that is intended to be a Collection of something. That is all.
Which, of course, concedes the point that fooAll: methods entail an implied iteration on its parameter.
Even if the statement was correct (which I do not agree with Lex, at least not if we look at the image) it would only show that most such methods where *implemented* that way. IMHO it doesn't "imply" anything.
Q.E.D.
:-) Nah.
regards, Göran