Module: TheForce::ObjectSupport::Memoization
- Included in:
- Object
- Defined in:
- lib/the_force/memoize.rb
Instance Method Summary collapse
Instance Method Details
#attr_memoize(attribute, &b) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/the_force/memoize.rb', line 6 def attr_memoize(attribute, &b) raise ArgumentError, "attr_memoize requires a block" unless block_given? ivar = "@#{attribute}" self.class_eval do define_method attribute.to_sym do |*args| refresh = !!args[0] if not instance_variable_defined?(ivar) or refresh instance_variable_set(ivar, instance_eval(&b)) else instance_variable_get(ivar) end end end end |