You've probably noticed that the Ruby collection classes support a
large number of operations that do various things with the
collection: traverse it, sort it, and so on. You may be thinking,
``Gee, it'd sure be nice if
my class could support all these
neat-o features, too!'' (If you actually thought that, it's probably
time to stop watching reruns of 1960s television shows.)
Well, your classes
can support all these neat-o features,
thanks to the magic of mixins and module
Enumerable
. All you have
to do is write an iterator called
each
, which returns the
elements of your collection in turn. Mix in
Enumerable
, and
suddenly your class supports things such as
map
,
include?
, and
find_all?
. If the objects in your collection
implement meaningful ordering semantics using the
<=>
method, you'll also get
min
,
max
, and
sort
.