From: Takaaki Tateishi Date: 2002-01-05T05:18:28+09:00 Subject: [ruby-dev:15633] Re: rb_hash_initialize 立石です. At Sat, 5 Jan 2002 03:48:49 +0900, matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > |実行結果をキャッシュするという使われ方をする場合には,call があ > |る方が良い気がします. > > えー、どうして? なんでHashにcallが? ひょっとして無意味かつ頓珍漢なことを提案してしまったのかも… Hash#callがあると良いなと思った動機を書いておきます. 例えば, f = Hash.new{|h,key| h[key] = (1..key).inject(1){|a,b| a*b} } f[20000] f[20000] f = Proc.new{|i| (1..i).inject(1){|a,b| a*b} } f[20000] f[20000] とした場合 Hash を使った方が2度目の [] は高速に行なえます. 一方,コールバック関数などとして f を使う時に,f[] を呼ぶのか,f.call を呼ぶのかという点で,f.call を使うのが普通なのかなと思っていたのでし た.そのため,Hash#callがあると良いかもと思い提案してみたのです. # 僕のcall,[]に対する認識が間違っているのかも… -- Takaaki Tateishi