Module: Mem::ClassMethods

Defined in:
lib/mem.rb

Instance Method Summary collapse

Instance Method Details

#memoize(method_name) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/mem.rb', line 25

def memoize(method_name)
  define_method("#{method_name}_with_memoize") do |*args, &block|
    if has_memoized?(method_name)
      memoized(method_name)
    else
      memoize(method_name, send("#{method_name}_without_memoize", *args, &block))
    end
  end
  alias_method "#{method_name}_without_memoize", method_name
  alias_method method_name, "#{method_name}_with_memoize"

  define_method("#{method_name}=") do |value|
    memoize(method_name, value)
  end
end