Unary - Binary message
Richard A. O'Keefe
ok at atlas.otago.ac.nz
Thu Oct 25 05:13:39 UTC 2001
"Gary McGovern" <garywork at lineone.net> wrote:
[Alan Key wrote:
A way around this is to make a class to hold numbers that can be
incremented (we used to call this a "gauge"). If you stick one
of these in a variable slot, then all will work pretty well.
Can you see where you should subclass gauge?
]
My guess would be make an IntegerArray with the index changing on
incrementing. Close ?
Perhaps a simpler example is a Counter.
Create a new subclass Counter of Object with one instance variable 'value'.
Give it the methods
value "access method"
value ifNil: [value := 0] "lazy initialisation to 0".
^value
increment "bump value, return self"
value := self value + 1
decrementIfPositive
value > 0 ifTrue: [value := self value - 1]
isZero
^self value = 0
Now you can do
|c|
c := Counter new.
c value "==> 0"
c isZero "==> true"
c increment.
c isZero "==> false"
c decrementIfPositive.
c decrementIfPositive.
c value "==> 0"
You don't want a counter that clamps at 0? Then roll your own.
(Note that ++ in C++ and C99 will clamp for one type but not others.)
You want a method to set a counter to any number? Add one.
More information about the Squeak-dev
mailing list
|