attr_accessorを自分で定義する。

メタプログラミングRubyを再読している。

メタプログラミングRuby

メタプログラミングRuby


P154らへんのクラスマクロの辺りを読んでいる。
attr_accessorを自分で書いてみる。
動くものね。。

class C
  attr_accessor :my_att #単なるクラス・メソッド

  # アクセッサーを手動定義
  def att=(value)
    @att = value
  end
  
  def att
    @att || nil
  end
  

  # 俺俺 attr_accessor 多分こんな感じ
  def self.my_attr_accessor sym
    define_method "#{sym}=" do |value|
      @symbol = value
    end
    define_method "#{sym}" do
      @symbol || nil
    end
  end
  
  my_attr_accessor :hoge

end

o = C.new
o.att = 1
o.att # => 1
o.my_att = 10
o.my_att # => 10
o.hoge = 10
o.hoge # => 10