From: Shin-ichiro HARA Date: 2001-05-22T20:57:02+09:00 Subject: [ruby-dev:13291] Re: Enumerator -- Round 2 原です。 > > です。かなり汎用性の高い形ですよね。Enumerable を include して > > いることと、唯一のメソッドの名前が each であることだけが「個性」で > > す。こんな不思議なものを組み込みクラスにしてしまっていいのか。 > > 汎用性というのはどうでしょう。オブジェクトとメソッド名& >引数を指定してイテレートするために使う、という単機能に特化 >していて、変な使い方をされたりする心配はないと思います。 >機能が最小限なので継承して役に立つわけでもありません。 汎用性というのは Enumerator そのものじゃなくて、Enumerator の持ってい る形式のことです。それを取り出して、例えば Method_with_args として class Method_with_args def initialize(obj, method, *args) @obj = obj @meth = method @args = args end def call(&b) @obj.send(@meth, *@args, &b) end end class Enumerator < Method_with_args include Enumerable alias each call end として、両クラスとも組み込みにすると少しは気が休まるかなあ。 > でも、明確な役割は持っており、 Enumerable と二人一組で >働くことで何でもぶんまわすことができます。 その二人一組というのもちょっと引っかかるところなんですよ。まあ、 メソッドチェーンをしたいんだから仕方がないんですけど。