Module: Lite::Memoize::Klass

Includes:
Table
Defined in:
lib/lite/memoize/klass.rb

Instance Method Summary collapse

Methods included from Table

#store

Instance Method Details

#memoize(method_name, as: nil) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/lite/memoize/klass.rb', line 9

def memoize(method_name, as: nil)
  inner_method = instance_method(method_name)

  define_method(method_name) do |*args|
    key = self.class.caller_key(args, as: as || method_name)

    self.class.store[key] ||= inner_method.bind(self).call(*args)
  end
end