From: IWAOKA Masahiro Date: 2001-01-07T00:22:34+09:00 Subject: [ruby-list:27029] Re: Array#sum いわおかです。 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 を "+" した時の挙動とか、全て決めてやら なければならないので、一般的なものを作るのは大変でしょう。それより は、中身がわかってる個々のユーザが自分用のメソッドとして定義した方 が、コストが低いのでは。 いわおか