From: Tanaka Akira Date: 2007-12-25T02:52:15+09:00 Subject: [ruby-dev:32716] Re: Enumerable can't take multiple parameters In article <20071225.024223.988324894.gotoyuzo@sawara.priv.tokyo.netlab.jp>, GOTOU Yuuzou writes: > というのはなんとなく不便な気がするので、複数のパラメータを受 > け取るのが無難ではないでしょうか。 問題は受け取った後にどうするか、ではないでしょうか。 たとえば、enum.max {|a, b| ... } をどう定義するか、とか。 collect であれば > In message "Re: [ruby-dev:32708] Enumerable can't take multiple parameters" > on Mon, 24 Dec 2007 22:25:54 +0900, GOTOU Yuuzou writes: > module Enumerable > def collect > result = [] > self.each{|*x| result.push(yield *x)} > result > end > end と、ある程度は自然に定義できますが、max を同様に定義するのは 難しいように思います。 複数の値というのがふたつあって、それをひとつの配列とは区別で きる形でブロックに渡せるのかというと、簡単ではなさそうです。 また、max の返り値も見つけたものが複数あったときに配列と区別 して返せるかというと、これも難しそうです。 まぁ、Enumerable が複数のパラメータを受け取ったら配列を受け 取ったものとするというのはあり得るかもしれません。 -- [田中 哲][たなか あきら][Tanaka Akira]