Slide 44
Slide 44 text
def memoize(method_name)
nonmemoized_method_name = '__nonmemoized_' + method_name.to_s
alias_method nonmemoized_method_name, method_name
define_method(method_name) do |*args|
@cache ||= {}
method_cache = (@cache[method_name] ||= {})
if method_cache.key?(args)
method_cache[args]
else
method_cache[args] = send(nonmemoized_method_name, *args)
end
end
end