定義されていなければなりません。メソッドの実装、要素を保持する親クラスから、要素をひとつづつ取り出し、その要素にブロック(関数)を適用すること。メソッドの実装を示す。メソッドに与えられるブロックに引き渡していることになる。メソッドの引数にブロックが与えられることが明示されていないこと。使われてることで、メソッドにブロックが与えることを想定しているがわかる。メソッドを使ってみる。「人」オブジェクトを追加する。メソッドを呼出すことができる。この2つのメソッドを試しに使ってみる。メソッドの呼び出しのとき、ソートの方法をブロックで渡している。全ての要素を昇順にソートした配列を生成して返します。果をもとにソートします。定義してないので、上記のように、要素を比較する方法を、ブロックを渡す必要があった。メソッドで利用された、「人」を比較するためのメソッドを「人」クラスに追加してみる。一例として、「人」を比較するためルールを、以下のように決める。メソッドを利用して、様々なメソッドが定義されている。利用して、いくつかの操作が定義されている。メソッドを、ブロックなしで呼出せるようになった。次のように書かれている。Methodパターンを最も活用している部分は,EnumerableモジュールとComparableモジュールでしょう。...Comparableモジュールは大小比較の基本となる「<=>」メソッドを用いて,各種比較演算を提供しています。「<=>」メソッドの仕様はレシーバと引数を比較して,レシーバの方が大きければ正の整数,等しければゼロ,小さければ負の整数を返すというものです。Comparableモジュールは「==」,「>」,「>=」,「<」,「<=」,「between?」の6つの比較演算を提供しています。実装例を見たい場合は、以下を参照にすると良い。実現しており、後者は、サブクラス化によって実現している。Methodは継承とセットで語られますが,Enumerableのようにインクルードするだけで継承関係に関わりなく任意のクラスに機能を追加できるのは魅力的です。Rubyのインクルードは一種の(制限された)多重継承なので,何の不思議もありませんが。実装されているらしい。よると、たとえばEnumerable#collectをRubyで定義する時にどのように書くか、という問題です。endendと等価になるように定義しています。