Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

メタプログラミングRuby | 魔術 | 遅延インスタンス

概要

遅延インスタンス

内容

初回アクセスまでインスタンス変数を初期化しない。

サンプル

# encoding: utf-8
require "pry"

# 通常の初期化
class Hoges
  def initialize
    @hoges = {}
  end

  def hoges()
    @hoges
  end
end

hoges = Hoges.new.hoges
puts hoges.class

# 遅延の初期化
class Higes
  def higes()
    @higes ||= {}
  end

  def puts_higes
    puts @higes
  end
end

higes_obj = Higes.new
higes = higes_obj.higes
puts higes.class

higes[:hige] = "hige"
puts higes_obj.puts_higes

出力

Hash
Hash
{:hige=>"hige"}