なかだです。

At Mon, 22 May 2000 11:53:02 +0900,
matz / netlab.co.jp (Yukihiro Matsumoto) wrote:
> | ちょっと都合により if /RE/.../RE/ みたいなことをするクラスを
> |作ってみたんですが、//o みたいに、スクリプトスタティックという
> |か、一回だけ instantiate するお手軽な方法ってないもんでしょうか。
> |クラス定数とかにするって手はもちろんありますが、一ヶ所でしか使
> |わないものが方々にあったときとか結構邪魔くさそうな。
> 
> 良くイメージつかめないんですが、once(in date2)とかsingleton
> とかでカバーできること?

  ちょっと違います。once/singleton はあるオブジェクト/クラスに対して一
度だけ評価されるのに対して、スクリプトの位置に対して一度だけ評価すると
いうことなんですが、分かりにくいですね。(^^;

  いわばこんな感じ。


# evalonce.rb EvaluatedOnce = {} def eval_once c = caller(0) EvaluatedOnce[c] = yield unless EvaluatedOnce.key?(c) EvaluatedOnce[c] end if __FILE__ == $0 def same? a = yield b = yield [a, a.equal?(b)] end p same? {"abc"} p same? {/#{$0}/} p same? {/#{$0}/o} p same? {eval_once {"abc"}} p same? {eval_once {/#{$0}/}} end
これだと一行に一回しか使えないですけど。 -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦