はじめての extend

モジュールもクラス変数を持てるんですね。知らなかった。

モジュール / クラスが require されてからプロセスが終了するまでは、そのモジュール / クラスのクラス変数はずっと同じオブジェクトって認識でいいんだろうか。多分いいんだろうな。

というのもあるプロセス中でパーサオブジェクトが持つ辞書オブジェクトは、何回パーサが作られても同じ辞書であってほしい*1ので、どうすればいいのかを悩んでいたのでした。

で、結局どうしたかというと、こんな感じにしたのでした。

module Dic
@@dic を初期化

def [](key)
@@dic[key]
end

とかいろいろ
end

class Parser
@@dic = Object.new.extend Dic

いろいろ
end

*1:というか、辞書生成がボトルネックになってるぽい