「毎度計算して求めたくないんだよね」というニーズに答える書き方。前書いた原理の逆引き的な応用編。
環境
書き方
||=
を使うことで二回目以降の実行を抑止できる
例
めちゃくちゃ重い処理 heavy_work
があったとして、それを一回だけ実行して、それ以降は行いたくない場合、以下のようにクラスを作る。
class DemoObject def create_var @view_param ||= heavy_work end private # 一回だけやりたい作業 # @return [String] 作業の結果 def heavy_work p "Heavy Work Start!" # なにかめちゃくちゃ重たい処理 p "Heavy Work Complete!" "Work Result" end end
インスタンスメソッドに持つことによって、二回目以降は行われない 以下のようなプログラムを動かすと…
demo_obj = DemoObject.new
p demo_obj.create_var
p demo_obj.create_var
下記のような結果になる
$ ruby test.rb "Heavy Work Start!" "Heavy Work Complete!" "Work Result" "Work Result"
原理
原理は昔書いたのでそれを参考のこと