Mix-in とは、何かのモジュールをinclude すると、
それが継承チェーンの親の所へ入ってくるから、
そのモジュール内の関数が使えるようになる
例えば、include Enumerable とすると、
自クラスで、each を定義してあれば、Enumerable内のすべての関数が使える
Array も、Enumerableをインクルードしているから、
Array内の関数と、Enumerable内の関数が使える
つまり普通に、複数のインスタンスを配列に入れておけば、
Array・Enumerable内の関数が使える
ほとんど、この2つのクラス内の関数ばかりを使うから、
どういう事ができるか、見ておいた方がよい
また、eachを定義せずに、Enumerableの機能を使うには、Enumerator を使う。
eachは内部イタレータで、Enumeratorは外部イタレータ
初心者はイタレータなど考えず、普通に配列内に入れておけばよい
デザインパターンなら、この本が良い。
改訂2版 Ruby逆引きハンドブック、2018