From: GOTOU Yuuzou Date: 2007-12-25T06:09:33+09:00 Subject: [ruby-dev:32722] Re: Enumerable can't take multiple parameters In message <87fxxst1yo.fsf@fsij.org>, `Tanaka Akira ' wrote: > In article <20071225.024223.988324894.gotoyuzo@sawara.priv.tokyo.netlab.jp>, > GOTOU Yuuzou writes: > > というのはなんとなく不便な気がするので、複数のパラメータを受 > > け取るのが無難ではないでしょうか。 > > 問題は受け取った後にどうするか、ではないでしょうか。 > > たとえば、enum.max {|a, b| ... } をどう定義するか、とか。 (snip) > 複数の値というのがふたつあって、それをひとつの配列とは区別で > きる形でブロックに渡せるのかというと、簡単ではなさそうです。 > また、max の返り値も見つけたものが複数あったときに配列と区別 > して返せるかというと、これも難しそうです。 はい。それは同意します。 しかし、主張したいのはyieldに渡した値の一部が捨てられるとい う動作がしっくりこないところですかね。 Enumerable::Enumeratorも見ていたのですが、yield(a, b)という 形式で呼んでいるメソッドをラップした場合、Enumerableのメソッ ドからbにアクセスできなくなるのは不便じゃないでしょうか? > まぁ、Enumerable が複数のパラメータを受け取ったら配列を受け > 取ったものとするというのはあり得るかもしれません。 複数の値がある場合は配列に詰めて渡すように誘導するだろうとい う予想から、適当な動作だと思います。 -- ごとうゆうぞう