Hi.
do: aBlock
| aValue | aValue _ start. step < 0 ifTrue: [[stop <= aValue] whileTrue: [aBlock value: aValue. aValue _ aValue + step]] ifFalse: [[stop >= aValue] whileTrue: [aBlock value: aValue. aValue _ aValue + step]]
I do not see any accessor there.
But you should ;-)
I did not code the Interval class!!! And furthermore, I don't think I would like accessors in Interval.
But ok, next time I'll save my 2 cents.
A really objectified version would go even further like
do: aBlock [self atEnd] whileFalse: [ aBlock value: self currentValue. self step]
This would even increase performance because you could optimize different atEnd and step methods for e.g. ints and floats or points etc.
No way!... #atEnd forces a message send, #< is not a message send with regular ints and floats because it's done by the VM as a bytecode. Your argument does not apply to all (most common) cases. And would you make subclasses of Interval for different types of start and end, or would you optimize #< instead?
Andres.
squeak-dev@lists.squeakfoundation.org