Hello all
I've got an OrderedCollection that is normally a fixed size (let's say 10 elements). Each element in the collection is another an object or nil. So for example, at a point in time it might look like
[nil, nil, Object, nil, Object, Object, nil, nil, Object, nil]
What I want is to be able to resize the collection. Making it bigger is no problem for me, I can just add nils to the end of the collection. Making it smaller is involving a little bit of pain. I can see ways of doing it but theyr'e not elegant and I'm sure there are cleaner ways of doing it. If I made the above queue smaller I'd basically remove the nils starting from the beginning. So a resize to size 7 would give me
[ Object, Object, Object, nil, nil, Object, nil]
i.e. the first three nils have been removed.
Does anybody have any comments on appropriate code to handle this? If not, I'll go with the ugly stuff but it would be nice to know the correct SmallTalk way.
Many thanks for any suggestions.
Ian
Am 18.09.2008 um 10:06 schrieb Ian J Cottee:
Hello all
I've got an OrderedCollection that is normally a fixed size (let's say 10 elements). Each element in the collection is another an object or nil. So for example, at a point in time it might look like
[nil, nil, Object, nil, Object, Object, nil, nil, Object, nil]
What I want is to be able to resize the collection. Making it bigger is no problem for me, I can just add nils to the end of the collection. Making it smaller is involving a little bit of pain. I can see ways of doing it but theyr'e not elegant and I'm sure there are cleaner ways of doing it. If I made the above queue smaller I'd basically remove the nils starting from the beginning. So a resize to size 7 would give me
[ Object, Object, Object, nil, nil, Object, nil]
i.e. the first three nils have been removed.
Does anybody have any comments on appropriate code to handle this? If not, I'll go with the ugly stuff but it would be nice to know the correct SmallTalk way.
Many thanks for any suggestions.
I guess it doesn't get much more elegant and efficient than
start := coll findFirst: [:each | each ~~ nil]. coll removeFirst: start-1.
... unless you add a specific method to OC.
- Bert -
On Thu, Sep 18, 2008 at 9:44 AM, Bert Freudenberg bert@freudenbergs.de wrote:
I guess it doesn't get much more elegant and efficient than
start := coll findFirst: [:each | each ~~ nil]. coll removeFirst: start-1.
Interesting - many thanks Bert. I'll give that a try later on.
beginners@lists.squeakfoundation.org