まつもと ゆきひろです

In message "[ruby-list:10246] Re: for が修飾子だったら"
    on 98/10/22, Shin-ichro Hara <sinara / blade.nagaokaut.ac.jp> writes:

|原です。

|ruby では単なるメソッドとイテレータは構文上同じなんですよ。
|例えば each をイテレータブロックがなくてもエラーを起こさな
|い様に再定義できます。

まあ,そうですね.更にいえば「イテレータ」は「ある特性(ブロッ
クを受け取る)を持っているメソッド」のことで,構文上もなにも
まったく同じものです.原さんはもちろんご存知でしょうけど.捕
捉として.

|あるメソッドがブロックを伴っているかどうかは iterator? で判
|断します。だからブロックを伴う時とそうでない時と違う動作をす
|るようなメソッド(=イテレータ)を作ることもできるわけです。

歴史的な事情から iterator? という名前になってますが,本来は

  block_given?

とかいうような意味です.1.1では「ブロック引数」がありますか
ら,iterator? はそれほど必要ではなくなってるかも知れません.

                                まつもと ゆきひろ /:|)