いわおかです。

In the message <20010106234041.D634.GGB03124 / nifty.ne.jp>,
  on Sat, Jan 06, 2001 at 11:44:05PM +0900,   たけ  (tk) wrote:
> Array#sum ってあっても良さそうではありませんか?。
> 
> class Array
>   def sum
>     ret = 0
>     if defined? yield
>       each{|i| ret += yield(i) }
>     else
>       each{|i| ret += i }
>     end
>     ret
>   end
> end
> 
> form.client_width = edits.sum{ |c| c.width } + 10

これですと、配列の中身が事前にわかっていて、各々に "width" のよう
なメソッドを定義してやったり、異るクラス間の "+" を定義してやった
りしないと使えませんよね。

例えば、文字列と Fixnum を "+" した時の挙動とか、nil を "+" した時
の挙動とか、配列と Fixnum を "+" した時の挙動とか、全て決めてやら
なければならないので、一般的なものを作るのは大変でしょう。それより
は、中身がわかってる個々のユーザが自分用のメソッドとして定義した方
が、コストが低いのでは。

いわおか