0

カスタムattr_accessorを作成しようとしていますが、機能しないようです。ライターに割り当てられた値を返す代わりに、インスタンス変数を返します。何か案は?

class Object
  def custom_attr_accessor(klass, attribute)
    ivar = "@#{attribute}".to_sym
    writer_body = lambda { |arg| instance_variable_set(ivar, arg) }
    reader_body = lambda { ivar }
    klass.send(:define_method, "#{attribute}=".to_sym, &writer_body) 
    klass.send(:define_method, "#{attribute}".to_sym, &reader_body)
  end
end

class Person
end

custom_attr_accessor(Person, :age)

me = Person.new
me.age = 100
puts me.age

=> @age

4

1 に答える 1