[
Lists Home |
Date Index |
Thread Index
]
Emmanuil Batsis (Manos) scripsit:
> Thus, the signature to kilometer indicates a function signature where
> two parameters are passed, one for the number to convert and one for the
> type to convert from:
>
> function kilometer(someNumber, someType)
> {
> if(someType.equals("meters"))
> return fromMetersToKilometers(someNumber);
> // rest of elseif statements mapped to expected
> // input types here
> }
>
> which is bad, as the kilometer function can only accept a finite number
> of input types at first glance.
This is a classic case for the double-dispatching pattern that is used
in Smalltalk for mixed-mode arithmetic. Google for "double dispatch"
for details. But in fact there is a nonarbitrary choice, namely meters,
the SI unit of distance, for the pivot. The Kilometer object can ask
the Distance object to convert itself to meters, and then all it has
to know is one fact: 1 km = 1000 m.
--
John Cowan <jcowan@reutershealth.com>
http://www.reutershealth.com http://www.ccil.org/~cowan
.e'osai ko sarji la lojban.
Please support Lojban! http://www.lojban.org
|