Path: | lib/more/facets/memoizable.rb |
Last Update: | Wed Jan 05 06:24:23 +0000 2011 |
Memoization is an optimization technique used primarily to speed up programs by having function calls avoid repeating the calculation of results for previously-processed inputs.
When you "memoize" a method/function using Memoizable its results are cached so that later calls return results from the cache instead of recalculating them.
class T include Memoizable def initialize(a) @a = a end def a "#{@a ^ 3 + 4}" end memoize :a end t = T.new(10) (t.a.__id__ == t.a.__id__) #=> true
This method can also be used at the instance level to cache singleton (qua class) methods by including it in the singleton class.