Class | Cache |
In: |
lib/facets/more/cache.rb
|
Parent: | Object |
Cache objects are a kind of "delegator-with-cache".
class X def initialize ; @tick = 0 ; end def tick; @tick + 1; end def cached; @cache ||= Cache.new( self ) ; end end x = X.new x.tick #=> 1 x.cached.tick #=> 2 x.tick #=> 3 x.cached.tick #=> 2 x.tick #=> 4 x.cached.tick #=> 2
You can also use to cache a collections of objects to gain code speed ups.
points = points.collect{|point| Cache.cache(point)}
After our algorithm has finished using points, we want to get rid of these Cache objects. That‘s easy:
points = points.collect{|point| point.self }
Or if you prefer (it is ever so slightly safer):
points = points.collect{|point| Cache.uncache(point)}