than Travis found. But I once saw an image with long methods
for Collection(class)>>with: keyword's. They extended the class side
messes of Collection like this:
Collection(class)>>with:with:with:
Collection(class)>>with:with:with:with:
Collection(class)>>with:with:with:with:with:
...
So you could write
OrderedCollection with: $H with: $E with: $L with: $L with: $O
I guess they didnt know about Collection(class)>>withAll: which allows
you to write:
OrderedCollection withAll: #($H $E $L $L $O)
3 comments:
(Kerrin's Husband, Travis Griggs, said...)
I've added the 5 argument with: myself. Though I never really needed 6. Seems to be something magical about 5. What would be really cool of course is this solution. :)
The #with:with:with:with: methods are for convenience, in fact all of them use #withAll:
If with:with: is not declared in Collection to write something like this:
c := OrderedCollection
with: MyClass new
with: (MyOtherClass for: 'bla').
You must do something like this:
c := OrderecCollection new
add: MyClass new;
add: (MyOtherClass for: 'bla');
yourself.
Or for an Array:
c := Array new: 2.
c at: 1 put: MyClass new.
c at: 2 put: (MyOtherClass for: 'bla').
Not a big difference, but is convenient. Remember that you can't create an Array like this:
#(MyClass new)
Because this gives an array with two symbols. Squeak has a special notation, I think that is #{} (but is not portable to other smalltalks)
Since strings are collections too, you can also write
OrderedCollection withAll: 'Hello'
Post a Comment